【发布时间】:2014-11-23 19:00:16
【问题描述】:
PHP:
$a = array("key" => 23);
var_dump($a);
$c = &$a["key"];
var_dump($a);
unset($c);
var_dump($a);
输出:
array(1) {
["key"]=>
int(23)
}
array(1) {
["key"]=>
&int(23)
}
array(1) {
["key"]=>
int(23)
}
在第二个转储中,“key”的值显示为参考。这是为什么? 如果我对普通变量而不是数组键执行相同操作,则不会发生这种情况。
我唯一的解释是数组键通常存储为引用,只要符号表中只有一个条目,它就会在转储中显示为标量。
【问题讨论】:
-
是的,似乎 PHP 识别出您使用了引用,因此也将数组中的值替换为相同的引用。因此,如果您更新两个值之一,另一个值也会更新。
-
虽然如果我使用普通变量而不是数组键则不会发生这种情况。
-
stackoverflow.com/q/17528280/476 的副本;但是,下面的答案太好了,我不想关闭它。