【发布时间】:2013-07-05 21:10:36
【问题描述】:
当引用分配数组的元素时,数组的内容会被修改:
$arr = array(100, 200);
var_dump($arr);
/* shows:
array(2) {
[0]=>
int(100) // ← ← ← int(100)
[1]=>
int(200)
}
*/
$r = &$arr[0];
var_dump($arr);
/* shows:
array(2) {
[0]=>
&int(100) // ← ← ← &int(100)
[1]=>
int(200)
}
*/
Live run.(Zend 引擎可以正常工作,而 HHVM 显示“进程退出,代码为 153”。)
为什么要修改元素?
为什么我们看到的是&int(100) 而不是int(100)?
这看起来很奇怪。这种奇怪的解释是什么?
【问题讨论】:
-
我无法使用提供的代码重现这一点。使用 PHP 5.4.6
-
我查过了,真的很奇怪。因为没有任务。我检查了writecodeonline.com/php
-
@Robert 可以在这里重现,PHP_VERSION 在这里是 5.4.15
-
即使在 php 4 中也有相同的行为
标签: php arrays reference php-internals