在php中,for和foreach是常见的循环结构,但是两者直接有着本质的区别,今天,我们就来简单介绍连着直接的区别。
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过程中,对应的数组内容是被锁定的,循环期间不能修改!
示例说明,如下图所示:
for和foreach1for和foreach1