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呢?它在功能内部'链接'!
在$array = &$array1;
函数内部执行时,您将更改局部变量的值$array
.
它曾经有一个引用$array2
,但现在它包含一个引用$array1
.所以当你修改时$array
,你正在修改$array1
.
归档时间: |
|
查看次数: |
2159 次 |
最近记录: |