hi,欢迎访问本站!
当前位置: 首页编程开发正文

php中foreach与for循环在性能上的区别

墨初 编程开发 328阅读

在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循环。

标签:
声明:无特别说明,转载请标明本文来源!
相关推荐