是很困難的話我想要做的解釋,所以我提供了一個小例子,看評論:通過改變從一個函數返回的參考變化等全球性陣列值
$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。
我想要做的原因是搜索功能在我的用例中顯然更復雜(不僅僅是一個關鍵索引!),並且在找到結果後,便於處理結果:原始數組嵌套在各個級別。
因爲你的價值迴歸,而不是參考;所以修改返回的值不會修改全局值 –
@MarkBaker爲什麼你說我按價值回報?不應該通過引用返回'&search'? –