我试图理解 PHP 中的以下代码。这是概述,
有 2 个数组,由键值对组成,形式为 $k => $v
这两个数组使用 array_merge 函数合并在一起,形成第三个数组。
现在,这个数组被传递给一个函数。只有一个参数,数组名被传递。
这是代码(请注意,此代码只是一个概念,不是真正的代码):
<?php
function test(&$myArray, 0)
{
reset($myArray);
foreach ($myArray as $k => $v)
{
....
}
}
$arr3 = array_merge((array) $arr1, (array) $arr2);
test($arr3)
}
问题:
- 该函数是这样定义的,它需要两个参数,但是我们只传递一个参数。是因为在函数原型中初始化的第二个参数始终为 0 吗?那么,不需要传递相同数量的参数吗?
- 这里传递了数组名称。我的猜测是,它会将指向数组第一个元素(内存中数组的基地址)的指针传递给函数。
在这种情况下,如果您查看原型,则数组名称前面带有一个 & 符号。那么,这意味着,对数组的引用,地址?
为什么需要在数组上调用reset函数。是否因为在测试函数之前调用了用于形成该数组的 array_merge 函数?那么,由于合并了 $arr1 和 $arr2,它将数组中的指针移动到第一个元素之前?
函数中没有返回值,测试。那么,它是否修改了内存本身中原始数组的值,因此不需要返回数组?
谢谢。