PHP 遍历数组的三种方法及效率对比分析
本文实例分析了 PHP 遍历数组的三种方法及效率对比分享给大家供大家参考具体分析如下:
今天有个朋友问我一个问题 php 遍历数组的方法, 告诉她了几个顺便写个文章总结下, 如果总结不全还请朋友们指出
第一 foreach()
foreach() 是一个用来遍历数组中数据的最简单有效的方法<?php
$urls=array('aaa','bbb','ccc','ddd');
foreach($urlsas$url){
echo"This Site url is $url!";
}
?>
显示结果:ThisSiteurlisaaa
ThisSiteurlisbbb
ThisSiteurlisccc
ThisSiteurlisddd
第二 while() 和 list(),each() 配合使用<?php
$urls=array('aaa','bbb','ccc','ddd');
while(list($key,$val)=each($urls)){
echo"This Site url is $val.";
}
?>
显示结果:ThisSiteurlisaaa
ThisSiteurlisbbb
ThisSiteurlisccc
ThisSiteurlisddd
第三 for() 运用 for 遍历数组<?php
$urls=array('aaa','bbb','ccc','ddd');
for($i=0;$i
$str=$urls[$i];
echo"This Site url is $str.";
}
?>
显示结果:ThisSiteurlisaaa
ThisSiteurlisbbb
ThisSiteurlisccc
ThisSiteurlisddd
有时候有人也在问这几种遍历数组的方法哪个更快捷些呢, 下面做个简单的测试就明白了
下面来测试三种遍历数组的速度
一般情况下, 遍历一个数组有三种方法, forwhileforeach 其中最简单方便的是 foreach 下面先让我们来测试一下共同遍历一个有 50000 个下标的一维数组所耗的时间<?php
$arr=array();
for($i=0;$i<50000;$i++){
$arr[]=$i*rand(1000,9999);
}
functionGetRunTime()
{
list($usec,$sec)=explode(" ",microtime());
return((float)$usec+(float)$sec);
}
######################################
$time_start=GetRunTime();
for($i=0;$i
$str=$arr[$i];
}
$time_end=GetRunTime();
$time_used=$time_end-$time_start;
echo'Used time of for:'.round($time_used,7).'(s)';
unset($str,$time_start,$time_end,$time_used);
######################################
$time_start=GetRunTime();
while(list($key,$val)=each($arr)){
$str=$val;
}
$time_end=GetRunTime();
$time_used=$time_end-$time_start;
echo'Used time of while:'.round($time_used,7).'(s)';
unset($str,$key,$val,$time_start,$time_end,$time_used);
######################################
$time_start=GetRunTime();
foreach($arras$key=>$val){
$str=$val;
}
$time_end=GetRunTime();
$time_used=$time_end-$time_start;
echo'Used time of foreach:'.round($time_used,7).'(s)';
?>
测试结果:Usedtime offor:0.0228429(s)
Usedtime ofwhile:0.0544658(s)
Usedtime offoreach:0.0085628(s)
经过反复多次测试, 结果表明, 对于遍历同样一个数组, foreach 速度最快, 最慢的则是 while 从原理上来看, foreach 是对数组副本进行操作 (通过拷贝数组), 而 while 则通过移动数组内部指标进行操作, 一般逻辑下认为, while 应该比 foreach 快 (因为 foreach 在开始执行的时候首先把数组复制进去, 而 while 直接移动内部指标), 但结果刚刚相反原因应该是, foreach 是 PHP 内部实现, 而 while 是通用的循环结构所以, 在通常应用中 foreach 简单, 而且效率高在 PHP5 下, foreach 还可以遍历类的属性
来源: /detail/php-5087077971.html