1

我试图理解 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)

}

问题:

  1. 该函数是这样定义的,它需要两个参数,但是我们只传递一个参数。是因为在函数原型中初始化的第二个参数始终为 0 吗?那么,不需要传递相同数量的参数吗?
  2. 这里传递了数组名称。我的猜测是,它会将指向数组第一个元素(内存中数组的基地址)的指针传递给函数。

在这种情况下,如果您查看原型,则数组名称前面带有一个 & 符号。那么,这意味着,对数组的引用,地址?

  1. 为什么需要在数组上调用reset函数。是否因为在测试函数之前调用了用于形成该数组的 array_merge 函数?那么,由于合并了 $arr1 和 $arr2,它将数组中的指针移动到第一个元素之前?

  2. 函数中没有返回值,测试。那么,它是否修改了内存本身中原始数组的值,因此不需要返回数组?

谢谢。

4

1 回答 1

1
<?php
function test($myArray,$a =0) //passing by value
{
    reset($myArray);
    return $myArray;         
}

$arr3 = test($arr3); //call n store it back it in $arr3

function test(&$myArray,$a =0) //passing by reference
    {
        reset($myArray);

    }
test($arr3);  //just call;

?>
于 2012-09-20T07:53:53.437 回答