我有以下代码:
$variable = [1,2,3,4];
foreach ($variable as $key => &$value)
$value ++;
var_dump($variable);
我得到的结果是:
array (size=4)
0 => int 2
1 => int 3
2 => int 4
3 => &int 5
现在,当我添加一个空的foreach循环,像这样:
$variable = [1,2,3,4];
foreach ($variable as $key => &$value)
$value ++;
foreach ($variable as $key => $value);
var_dump($variable);
我得到了这个:
array (size=4)
0 => int 2
1 => int 3
2 => int 4
3 => &int 4
请有人解释一下,为什么在添加第二个空循环后最后一个元素没有更改,并且为什么最后一个元素前面有一个&符号?
unset()
取消引用 ~ "警告 在foreach
循环之后,$value
的引用和最后一个数组元素仍然存在。建议通过unset()
销毁它。" - Phil$value
仍然是对列表中最后一个项目的引用。请考虑这一点。 - Phil