array_merge可以有多少个数组?
How many arrays can be in array_merge?
所以我明白了array_merge()组合了多个数组。我真的对幕后的参数感到困惑。那么它真正能接收到多少个参数呢?
我希望答案是 "technically unlimited"(尽管我知道如果您需要那样做)。
那么按照这个想法,这个函数是如何正确工作的呢?它提前不知道参数。该功能是否必须设计成这样才能工作:
function array_merge($array, $array1=[], $array2=[], and so on...)
我们怎么能一直添加参数呢?
注意:我一直在参加一个 class 挑战,让我们真正了解函数的工作原理,这就是为什么我对它的工作原理如此具体。
您是否阅读了 array_merge()
的文档?
它接受任意数量的数组作为参数(但至少有一个):
Description
array array_merge ( array $array1 [, array $... ] )
Merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array.
它创建第一个数组的副本,然后一个一个地处理其他数组,将它们的值附加到部分结果,直到它处理完所有输入数组。
用户自定义函数也可以接收any number of arguments.
将其视为将数组发送到函数的相同方式;不需要提前知道数组的大小,只需在调用函数时就知道。
然后假设 PHP 解释器在幕后执行相同的操作;定义为 "I can accept as many parameters as necessary" 的函数可以重写为只将每个参数填充到一个数组中并将该数组提供给函数(这是一种简化,但概念上会发生类似的事情),然后该函数可以一次读取一个项目时间.
事实上,您完全可以在 PHP 函数中自己完成此操作:
<?php
function foo() {
var_dump(func_get_args());
}
foo(1, 2, 3, 4, 5, 6);
这没什么神奇的——解释器或编译器知道一个函数可以用多个参数调用(通过它的签名,或者像 PHP 的情况,不管定义如何)。
Python 会通过为 "match all indexed arguments" 定义一个参数来做同样的事情(即不通过键命名):
def a(*args):
print(args)
a(1, 2, 3, 4, 5)
=> (1, 2, 3, 4, 5)
PHP 5.6 引入了您可以使用的相同显式定义,名为 variadic functions。这些在它们的签名中使用 ...
来告诉解释器它应该吃掉定义参数之后的所有参数并将其放入数组中。
所以我明白了array_merge()组合了多个数组。我真的对幕后的参数感到困惑。那么它真正能接收到多少个参数呢?
我希望答案是 "technically unlimited"(尽管我知道如果您需要那样做)。
那么按照这个想法,这个函数是如何正确工作的呢?它提前不知道参数。该功能是否必须设计成这样才能工作:
function array_merge($array, $array1=[], $array2=[], and so on...)
我们怎么能一直添加参数呢?
注意:我一直在参加一个 class 挑战,让我们真正了解函数的工作原理,这就是为什么我对它的工作原理如此具体。
您是否阅读了 array_merge()
的文档?
它接受任意数量的数组作为参数(但至少有一个):
Description
array array_merge ( array $array1 [, array $... ] )
Merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array.
它创建第一个数组的副本,然后一个一个地处理其他数组,将它们的值附加到部分结果,直到它处理完所有输入数组。
用户自定义函数也可以接收any number of arguments.
将其视为将数组发送到函数的相同方式;不需要提前知道数组的大小,只需在调用函数时就知道。
然后假设 PHP 解释器在幕后执行相同的操作;定义为 "I can accept as many parameters as necessary" 的函数可以重写为只将每个参数填充到一个数组中并将该数组提供给函数(这是一种简化,但概念上会发生类似的事情),然后该函数可以一次读取一个项目时间.
事实上,您完全可以在 PHP 函数中自己完成此操作:
<?php
function foo() {
var_dump(func_get_args());
}
foo(1, 2, 3, 4, 5, 6);
这没什么神奇的——解释器或编译器知道一个函数可以用多个参数调用(通过它的签名,或者像 PHP 的情况,不管定义如何)。
Python 会通过为 "match all indexed arguments" 定义一个参数来做同样的事情(即不通过键命名):
def a(*args):
print(args)
a(1, 2, 3, 4, 5)
=> (1, 2, 3, 4, 5)
PHP 5.6 引入了您可以使用的相同显式定义,名为 variadic functions。这些在它们的签名中使用 ...
来告诉解释器它应该吃掉定义参数之后的所有参数并将其放入数组中。