为什么这段代码不能像我预期的那样工作?在 Test(&$array) 函数中,我将 ref 参数设置为全局 $array1 但这不起作用。
$array1 = array();
$array2 = array();
function Test(&$array)
{
global $array1;
$array = &$array1;
$array['inside'] = 'inside';
}
//由函数设置:
Test($array2);
$array2['test1'] = 'test1';
var_dump($array1); //array('inside' => 'inside') ** WHERE IS THE 'test1' key? **
var_dump($array2); //array('test1' => 'test1') ** WHERE IS THE 'inside' key? **
//设置没有函数:
$array2 = &$array1;
$array2['test2'] = 'test2';
var_dump($array1); //array('inside' => 'inside', 'test2' => 'test2') ** FINE **
var_dump($array2); //array('inside' => 'inside', 'test2' => 'test2') ** FINE **
编辑:
很明显,如果我将 $array 更改为指向 $array1 那么 $array1 将在函数外部具有 'inside' => 'inside' 值。有什么不清楚,如果我设置 $array2['test1'] = 'test1'为什么不改变这个 $array1呢?它在函数内部之前“链接”!