PHP函数数组参数通过引用

gga*_*bor 3 php arrays reference function

为什么这段代码不能按预期工作?在Test(&$ array)函数内部,我将ref参数设置为全局$ array1,但这不起作用.

$array1 = array();
$array2 = array();

function Test(&$array)
{
    global    $array1;
    $array = &$array1;

    $array['inside'] = 'inside';

}
Run Code Online (Sandbox Code Playgroud)

//由功能设定:

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? **
Run Code Online (Sandbox Code Playgroud)

//没有功能的设置:

$array2 = &$array1;
$array2['test2'] = 'test2';

var_dump($array1); //array('inside' => 'inside', 'test2' => 'test2') ** FINE **
var_dump($array2); //array('inside' => 'inside', 'test2' => 'test2') ** FINE **
Run Code Online (Sandbox Code Playgroud)

编辑:

很明显,如果我将$ array更改为指向$ array1,那么$ array1将在函数外部具有'inside'=>'inside'值.有什么不清楚,如果我设置$ array2 ['test1'] ='test1' 为什么不更改这个$ array1呢?它在功能内部'链接'!

Roc*_*mat 5

$array = &$array1;函数内部执行时,您将更改局部变量的值$array.

它曾经有一个引用$array2,但现在它包含一个引用$array1.所以当你修改时$array,你正在修改$array1.