php专区

 首页 > php专区 > PHP基础 > 数组 > php 数组遍历性能的比较 - php数组

php 数组遍历性能的比较 - php数组

分享到:
【字体:
导读:
          for循环只对数字索引有限,for和foreach遍历结束后不需要对数据进行reset()操作即可供下次遍历,而each方法则需要,代码如下:?php//a$arr=array(#39;a#39;=#39;abc#39;,#39;b#39;=123,#39;c......

php 数组遍历性能的比较

for循环只对数字索引有限,for和foreach遍历结束后不需要对数据进行reset()操作即可供下次遍历,而each方法则需要,代码如下:

  1. //a 
  2. $arr=array('a'=>'abc','b'=>123,'c'=>true); 
  3. //b 
  4. //$arr=range('a','d'); 
  5.  
  6. //1    
  7. for($i=0;$i$arr);$i++) 
  8.     echo $arr[$i].', '
  9. echo ''
  10.  
  11. //2 
  12. foreach($arr as $key
  13.     echo "$key, "
  14. echo ''
  15.  
  16. //3 
  17. foreach($arr as $key=>$val
  18.     echo "$key-$val, "
  19. echo ''
  20.  
  21. //4 
  22. reset($arr); 
  23. while($item=each($arr)){ 
  24.     echo $item['key'].'-'.$item['value'].', '
  25. }//开源代码phpfensi.com 
  26. echo ''
  27.  
  28. //5 
  29. reset($arr); 
  30. while(list($key,$val)=each($arr)){ 
  31.     echo "$key-$val, "
  32. echo ''
  33. ?> 

使用语句a $arr=array('a'=>'abc','b'=>123,'c'=>true); 对$arr进行初始化得到数字索引数组,输出如下:

, , ,abc, 123, 1,a-abc, b-123, c-1,a-abc, b-123, c-1,a-abc, b-123, c-1, 使用语句b $arr=range('a','d'); 对$arr进行初始化得到关联数组,输出如下:

  1. a, b, c, d, 
  2. a, b, c, d, 
  3. 0-a, 1-b, 2-c, 3-d, 
  4. 0-a, 1-b, 2-c, 3-d, 
  5. 0-a, 1-b, 2-c, 3-d, 

经过反复多次测试,结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。foreach比while大约快20% ~ 30%左右,随后再把数组下标增加到500000、5000000测试结果也一样,但从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反,原因应该是,foreach是PHP内部实现,而while是通用的循环结构.

分享到:
php一维数组排序与多维数组排序 - php数...
php一维数组排序与多维数组排序 先看一维数据排序的实例asort()函数和ksort()函数,实例代码如下:   一维数据排序二,sort()函数,可将数组按字母或是数字的升序(从低到高)来进行排序,实例代码如下:   好了现在来看看二维数据库排序实例代码: $data[] = array(&#03...
PHP中数组排序函数详解 - php数组
PHP中数组排序函数详解 1 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型. 2 函数名中出现单a表示association,含义为,在按值排序的过程中,保持key=>value的对应关系不变 3 函数名中出现单k表示key,含义为,在按值排序的过程中按照数组key而不是数组的...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……