for和foreach

  • Post author:
  • Post category:其他




for和foreach的联系

for和foreach都是循环结构,

一般for循环需要先知道数组长度再操作,

而foreach不需要。如果一个数组是使用连续的数字最为数组单元的键,那么可以使用for循环结构。如果不确定数组的键或者数组的键有包含字符的,应当使用foreach循环结构。



for和foreach的区别

for每次循环都操作对应索引下的值,对于每个值的改变也都会反映到被遍历的对象中;

而foreach每次操作一个单元,都是将其索引和值分别取到变量中,或者只取出值到一个变量中,然后单独操作放有索引和值的变量,不会影响到被遍历的对象本身。如果要在遍历过程中修改对象中的值,需要在声明是在变量前加&符号。

一般情况下:foreach效率比for高很多,因为for在循环的时候需要进行很多次条件判断,需要花费更多的时间循环。

另外从数组变量的数据结构来看,foreach直接通过结构体中next指针获取下一个值,而for循环需要根据key先进行一次hash才得到值。

只有在固定长度或长度不需要计算的时候for循环效率高于foreach。其他情况下foreach的效率高于for循环。

不过在foreach过程中,对应的数组内容是被锁定的,循环期间不能修改!



版权声明:本文为m0_51443204原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。