我试图理解PHP中的引用(=&)。在这个简单的例子中,它的行为似乎不一致。
$a =& $b;
var_dump($a); //null
var_dump($b); //null
$my_array = ['ha'];
foreach($my_array as $key){
$a =& $a[$key];
echo "$key<br/>";
var_dump($a); //null
var_dump($b); //['ha'=>null]
}
既然$a和$b应该指向同一个地方,那么$a为什么会变成null,而$b却变成了数组呢?如果$a被改变了,$b不应该也被改变成相同的吗?除非我完全误解了引用赋值,否则逻辑似乎是不一致的。
1条答案
按热度按时间wfveoks01#
您正在破坏
foreach()
函数内部的代码。当a[$key]
不存在时,您将$a[$key]
赋值给$a
。我重写了代码,它工作正常。