急求:foreache遍历数组问题


foreach遍历的是对原数组的拷贝,我想问一下高手们 foreach在遍历时是先对原数组拷贝后再遍历还是随着指针一个个往下移动 一个个保存值的信息与键的信息 然后执行徇环输出?

我是一个初学者 上面是我们老师讲的foreach执行顺序图 如果按照老师所讲的这个图的话 那么就是随着指针一个个往下移 一个个健值的复制然后输出。

可是在foreach循环过程中对原数组进行更改 老师又说如果对原数组没有进行写操作Php内部优化是不会真正地对原数组进行了拷贝 如果进行了写操作就会对原数组进行了一份真的拷贝 我的疑问是 在进行foreach循环时指针本身就会移动 最后移动到非法位置 而为什么在循环过程中对原数组进行了拷贝 而原数组的指针没有动呢?

 如下图

上图当下标为1时 根据foreach循环图 指针会指向下标2的元素 可是当下标为1时会对原数组进行拷贝 拷贝的过程中不是指针会移动的吗 而这里为什么指针指向的却是进行写操作时指针所指向的元素呢?求解 急 谢谢各位了!

2 个解决方案

#1


mark  搭车学习下foreach的原理.

一直不懂这些,  在我眼里foreach()后的current()指向数组中的最后一项不是很正常的吗

#2


说错 指向循环的最后一项

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com