在PHP中引用数组 - 问题

时间:2012-09-20 06:14:24

标签: php arrays

我试图理解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. 这里传递数组名称。我的猜测是,它会将指向数组的第一个元素(内存中数组的基地址)的指针传递给函数。
  3. 在这种情况下,如果查看原型,数组名称前面会有一个&符号。那么,这意味着,对数组的引用,地址?

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

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

    3. 感谢。

1 个答案:

答案 0 :(得分: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;

?>