How many arrays can be in array_merge?
所以我理解array_merge()合并了多个数组。 我只是对幕后的参数感到困惑。 那么它真正可以接收多少个参数?
我希望答案是"技术上不受限制的"(即使我知道如果您需要这样做的话,也会出错)。
那么,遵循该想法,该功能如何正常工作? 它不提前知道参数。 不一定要这样设计功能才能工作:
1 |
我们如何才能继续添加参数?
注意:我上过一堂课,使我们对功能的工作原理提出了挑战,这就是为什么我对功能的工作如此具体。
可以将其视为将数组发送到函数的相同方式;不需要事先知道数组大小的大小,而只是在调用函数时知道。
然后,假设PHP解释器在后台执行相同的操作;可以将定义为"我可以接受尽可能多的参数"的函数重写为将每个参数填充到数组中,然后将该数组提供给函数(这是一种简化,但从概念上讲类似的事情发生了),然后该函数可以一次读取一项。
实际上,您可以完全通过以下方式在PHP函数中完成此操作:
1 2 3 4 5 6 |
这没有什么神奇的-解释器或编译器知道可以使用多个参数来调用函数(通过其签名或在PHP的情况下,无论定义如何)。
Python会通过定义一个参数以"匹配所有索引的参数"(即未由键命名)来实现相同的目的:
1 2 3 4 5 | def a(*args): print(args) a(1, 2, 3, 4, 5) => (1, 2, 3, 4, 5) |
PHP 5.6引入了可以使用的相同的显式定义,即可变参数函数。它们在其签名中使用
您已阅读
它接受任意数量的数组作为参数(但至少一个):
Description
1Merges 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.
它创建第一个数组的副本,然后一个一个地处理其他数组,将它们的值附加到部分结果中,直到处理所有输入数组为止。
用户定义的函数也可以接收任意数量的参数。