Passing by reference assignment php
本问题已经有最佳答案,请猛点这里访问。
根据下面的PHP代码,输出为
1 2 3 | 1 . 1 2 . 2 3 . 3 |
我理解&;$ref是通过引用传递的。但就像在赋值之后($row=&;$ref;)无论何时"row"更改值,"ref"也会更改为与"row"相同的值。真令人困惑。似乎=不仅将右值赋给左值。有人能核实一下吗?
1 2 3 4 5 6 7 8 9 | <?php $ref = 0; $row = &$ref; foreach (array(1, 2, 3) as $row) { print"$row . $ref " ; } echo $ref; ?> |
当你这样做的时候
它的意思是:相同的变量内容有另一个名称。那是,同样的,不是复制品。你在
在不深入研究技术细节的情况下,这里的基本思想是,您已经将
1 | $ref = $row; |
那么,
1 | $row = &$ref; |
最常见的用法是需要向函数中注入一些值。
1 2 3 4 5 6 7 |
生产
1 2 3 4 5 6 7 8 |
但是,从函数声明中删除
1 2 3 4 5 6 7 8 |
PHP有时会自动为您传递引用。例如,如果您实例化一个类并将该实例注入到一个函数中,它将自动通过引用传递。