php
$arr = [
'a', 'b',
'c', 'd',
];
foreach ($arr as &$each){
echo $each;
}
echo PHP_EOL...;
foreach ($arr as $each){
echo $each;
}
这段代码很简单, 输出数组的元素两次, 感觉会输出两次 abcd?...修改each变量会修改arr的最后一个元素, 这是为什么呢?
有过C语言使用经验的大概一看就明白是怎么回事了....仔细看上面的foreach循环, each变量使用了&符号, 这个符号相当与c中的取址
php的foreach会在每次循环时,讲当前元素赋值给each, 然后进入循环体
当foreach遍历完成后, each...变量没有释放而是指向了arr数组中的最后一个元素, 所以在后面给each赋值时, 其实改变的时arr数组的最后一个元素
到此, 流程已经明白了, 下面还原一下最开始的两次foreach过程:
在第一个foreach