通过引用分配php
这个问题在这里已经有了答案:
没有深入研究技术细节,这里的基本思想是你已经使$ref
成为$row
的引用。 具体来说, $row
某个内存地址。 如果你做了一个简单的任务
$ref = $row;
然后$ref
是$row
的副本 。 如果你改变一个,它不会改变另一个
$row = &$ref;
$ref
现在指向$row
。 所以他们本质上是同一个变量。 他们指向相同的记忆位置(过于简化,所以你明白了)。
最常见的用法是你需要在函数中注入一些值。
$data = ['1', '2', '3'];
function modVal(Array &$arr) {
$arr[2] = '9';
}
modVal($data);
var_dump($data);
产生
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "9"
}
然而,从函数声明中移除&
,输出就变成了
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
}
PHP有时会自动通过引用传递给你。 例如,如果您实例化一个类并将该实例注入到函数中,它将自动通过引用传递。
当你做$row = &$ref;
这意味着:与其他名称相同的变量内容。 也就是说,相同,不是副本。 你在$ref
做什么,它将以$row
......反之亦然。
上一篇: Passing by reference assignment php
下一篇: Increasing array elements while in foreach loop in php?