我刚读过Bill Karwin的这个答案.
请注意,它$node是通过引用传递的.
我一直认为那里创建的变量只是暂时的,只存在于循环结束之前(或者它可能仍然设置为最后一次迭代 - 我还没有测试过).
那么,通过引用传递它有什么好处?
我确定有一个,但我还不知道.
它与更快或更高效无关.
PHP实现了写时复制,因此在您更改其值之前,变量可能会引用相同的内存区域.然后,当您更改变量时,PHP会决定是否创建副本,具体取决于您是按值还是按引用访问它.
$a = array("abc");
foreach ($a as $element) {
$element = "def";
}
print_r($a);
Array
(
[0] => abc
)
Run Code Online (Sandbox Code Playgroud)
foreach ($a as &$element) {
$element = "def";
}
print_r($a);
Array
(
[0] => def
)
Run Code Online (Sandbox Code Playgroud)
请注意,PHP 5中的所有对象都是通过引用访问的,而不使用&运算符.
这是使用对象的一个很好的理由!
在PHP中使用引用要非常小心,因为它们可能会产生令人困惑的效果.
请务必阅读此博客:不要使用 PHP核心开发人员JohannesSchlüter的PHP参考资料
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |