很难用言语解释我正在尝试做什么,所以我提供了一个最小的例子,见评论:
$g = array(
'a' => array(1, 2, 3),
'b' => array(4, 5, 6)
); // A global array
function &search($key) {
global $g;
return $g[$key];
}
$a = search('b'); // Now $a should be a reference to $g['b'], right?
$a[2] = 666;
print_r($a); // Ok changed
print_r($g); // Why not changed?
在PHP 5.6.4上测试。
我正在尝试做的事情的原因是搜索功能在我的用例中显然更复杂(不仅仅是一个键索引!),并且在找到结果之后,处理结果很方便:原始数组嵌套在各个级别。
答案 0 :(得分:4)
来自the manual:
注意:与参数传递不同,这里你必须使用&在两个地方 - 表示你想要通过引用而不是副本返回,并指示应该为$ myValue执行引用绑定而不是通常的赋值。
您的代码只需要额外的&符号(上面提到的引用“绑定”),如下所示:
$a =& search('b');