PHP函数数组参数通过引用
为什么这段代码不能按预期工作?
在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呢?它在功能内部’链接’! 解决方法
这是我对PHP中的引用的理解,以及为什么代码没有达到预期的效果(如果我弄错了,有人请跳过我,我经常使用引用!还有,我确信有比我更好的术语我正在呼叫“标识符”和“价值”;我只是想避免在任何一个概念中使用“变量”.)
>有一堆变量标识符(您获取数据的方式)和一堆变量值(实际上数据的位置) PHP中普通值的参考系统总是包含一个间接级别 – 例如,您无法以C中的方式创建指向指针的指针. 唯一棘手的情况是对象,它在许多语言中都有自己的额外级别的间接 – 而$foo = 42; $bar = $foo;将表示42的数据从$foo的值复制到$bar,$foo = new stdClass; $bar = $foo复制一个对象指针.因此,虽然$foo和$bar仍然有单独的值,并且$foo = 42这样的赋值对$bar没有任何影响,$foo-> a = 1;和$bar-> a = 1将最终改变同一个对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |