我写了一段教程代码,运行后遇到了一些很奇怪的事情。
我的 Chrome 扩展程序 Var Dumpling 没有看到数组中的最后一个条目,因为一个 & 号被附加到值的类型。
我用这段代码测试过:
$alphabet = array('a', 'b', 'c');
foreach ($alphabet as &$letter) {
$letter .= 'a';
}
var_dump($alphabet);
var_dump 的结果是:
array(3) {
[0]=>
string(2) "aa"
[1]=>
string(2) "ba"
[2]=>
&string(2) "ca"
}
您可以看到最后一个条目是 &string(2) "ca"
而不是我期望的 string(2) "ca"
。这在逻辑部分没有问题,我可以调用 $alphabet[2]
,它会返回最后一个条目 ca
的值。
我想知道的是,这个约定是 PHP 中的一些奇怪问题吗?
最佳答案
这表示一个变量是一个引用并且是完全有效的。在大多数情况下,忽略它并继续。
在这种特殊情况下,这可能意味着您的数组的最后一个元素仍在从您的 foreach 循环中引用。由于您在那里将其用作引用,并且循环关闭后循环中的最后一项仍然存在,因此该项目的引用仍然存在。 或者简而言之:
在你的循环之后,$letter 仍然是对 $alphabet[2] 的引用。
如果您unset($letter)
,该符号应该消失。
关于php - 在数组 var_dump 末尾添加 & 号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26485462/