问题
为了引出问题, 先来看下面一段代码:
<?...我没有给数组赋值啊,数组的最后一个元素怎么在第二次循环的时候改变了呢?
问题分析
再来看下面一段修改过得代码:
<?...修改each变量会修改arr的最后一个元素, 这是为什么呢?
有过C语言使用经验的大概一看就明白是怎么回事了....仔细看上面的foreach循环, each变量使用了&符号, 这个符号相当与c中的取址
php的foreach会在每次循环时,讲当前元素赋值给each, 然后进入循环体
当foreach遍历完成后, each...变量没有释放而是指向了arr数组中的最后一个元素, 所以在后面给each赋值时, 其实改变的时arr数组的最后一个元素
到此, 流程已经明白了, 下面还原一下最开始的两次foreach过程:
在第一个foreach