数组是通过引用还是PHP中的值传递的?

时间:2016-08-05 15:51:46

标签: php arrays pass-by-reference pass-by-value

是否通过引用或值在PHP中传递数组?

例如,让我们看看这段代码。

function addWeight($arout, $lineCountry, $lineDomain, $target, $weight)
{
    $currentDomain=getDomain();
    $currentCountry=getCountry();

    if ($currentCountry==$lineCountry && ($currentDomain == $lineDomain || $lineDomain==""))
    {
        $tarobreakpoint=0;
        $arout [$target] =  intval($weight);
    }

    return $arout;
}

基本上它将数组作为参数。根据某些情况,它会向数组添加元素。我想知道这是否有效?如果$arout像所有数组一样通过引用传递,那么我认为它是有效的。但如果只是复制并通过价值传递,那么它就不是。

那么判决是什么?

1 个答案:

答案 0 :(得分:1)

根据manual,PHP数组按值传递:

  

数组分配始终涉及值复制。使用引用运算符通过引用复制数组。

如果您想传递数组的引用,请使用上面提到的相应运算符(&),并删除return $arout;函数中的addWeight()行:

<?php
// pass $array by reference using & operator
addWeight(&$array, $lineCountry, $lineDomain, $target, $weight);