php
$arr = [
'a', 'b',
'c', 'd',
];
foreach ($arr as &$each){
echo $each;
}
echo PHP_EOL...;
foreach ($arr as $each){
echo $each;
}
这段代码很简单, 输出数组的元素两次, 感觉会输出两次 abcd?...我没有给数组赋值啊,数组的最后一个元素怎么在第二次循环的时候改变了呢?
问题分析
再来看下面一段修改过得代码:
<?...php
$arr = [
'a', 'b',
'c', 'd',
];
foreach ($arr as &$each){
echo $each;
}
echo PHP_EOL...变量没有释放而是指向了arr数组中的最后一个元素, 所以在后面给each赋值时, 其实改变的时arr数组的最后一个元素
到此, 流程已经明白了, 下面还原一下最开始的两次foreach过程:
在第一个foreach