php中foreach与for循环在性能上的区别
墨初 编程开发 517阅读
在php中foreach循环一般在处理数组时使用,而for一般在循环某个重复的逻辑时使用,同为循环处理逻辑而他们在性能上有啥区别呢。
php中foreach与for性能上的区别
数组处理方法:
1、循环数字数组时,for需要事先count($arr)计算数组长度,需要引入自增变量$i,每次循环都要进行条件判断$i<$c,然后自增$i++,输出数组元素时,$arr[$i]需要进行哈希操作。
例:
//这是一个大的数组 $arr = array('.....'); for ($i=0; $i < conut($arr); $i++) { echo $arr[$i]; }
2、foreach循环处理数组时,指针会自动指向下一个元素,不需要计算数组长度,没有条件判断和自增变量,调用元素时也没有哈希操作,所以性能肯定要比for循环高。
例:
$arr = array('.....'); foreach ($arr as $key => $value) { echo $key; #数组的key echo $value; #数组的元素值 }
注:for对存在键值映射的关联数组无能为力,无法直接输出数组的key或元素值,所以在数组的循环处理方法foreach的性能要高于for.
多循环处理
在多循环处理方法(非数组处理),foreach循环的性能要低于for循环了。以下面计算1到9所有数字的合的逻辑为例。
1、for循环计算1到9之间数字的和
例:
#73so.com $z = 0; for ($i=0; $i < 10; $i++) { $z = $z + $i; } echo $z;
2、foreach循环计算1到9之间的数字和
$arr = array(1,2,3,4,5,6,7,8,9); $z = 0; foreach ($arr as $key => $a) { $z = $z = $a; } echo $z;
根据上面给出计算1到9所有数字的和的需求,for循环很容易就实现了计算逻辑,而foreach循环确要通过创建数组的方法进行实现(没有找到合适的方法),在这里可以看出for循环的性能以及便捷方法都远远的超过了foreach循环。