小编典典

“&”运算符在PHP函数中如何工作?

php

请查看以下代码:

function addCounter(&$userInfoArray) {
    $userInfoArray['counter']++;
    return $userInfoArray['counter'];
}

$userInfoArray = array('id' => 'foo', 'name' => 'fooName', 'counter' => 10);
$nowCounter = addCounter($userInfoArray);

echo($userInfoArray['counter']);

这将显示11。

但!如果在功能参数中删除“&”运算符,则结果将为10。

这是怎么回事?


阅读 219

收藏
2020-05-29

共1个答案

小编典典

&运营商告诉PHP不要把它传递给函数时数组复制。取而代之的是,将对数组的 引用 传递给函数,因此函数修改了原始数组而不是副本。

只要看这个最小的例子:

<?php
function foo($a) { $a++; }
function bar(&$a) { $a++; }

$x = 1;
foo($x);
echo "$x\n";    
bar($x);
echo "$x\n";
?>

在这里,输出为:

1
2

–的呼叫foo未修改$xbar另一方面,打到了。

2020-05-29