请查看以下代码:
function addCounter(&$userInfoArray) { $userInfoArray['counter']++; return $userInfoArray['counter']; } $userInfoArray = array('id' => 'foo', 'name' => 'fooName', 'counter' => 10); $nowCounter = addCounter($userInfoArray); echo($userInfoArray['counter']);
这将显示11。
但!如果在功能参数中删除“&”运算符,则结果将为10。
这是怎么回事?
该&运营商告诉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未修改$x。bar另一方面,打到了。
foo
$x
bar