为什么循环中的php引用不指向同一个地方?

goucqfw6  于 2023-01-16  发布在  PHP
关注(0)|答案(1)|浏览(97)

我试图理解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不应该也被改变成相同的吗?除非我完全误解了引用赋值,否则逻辑似乎是不一致的。

wfveoks0

wfveoks01#

您正在破坏foreach()函数内部的代码。当a[$key]不存在时,您将$a[$key]赋值给$a
我重写了代码,它工作正常。

$a =& $b;
var_dump($a); //null
var_dump($b); //null

$my_array = ['ha'];
foreach($my_array as $key){
    echo "Key: ". $key ."\n"; // Key: ha
    $a = $key;
    var_dump($a); // string(2) "ha"
    var_dump($b); // string(2) "ha" 
}

相关问题