加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 数组遍历性能的对照

发布时间:2022-07-24 11:52:06 所属栏目:PHP教程 来源:互联网
导读:for循环只对数字索引有限,for和foreach遍历结束后不需要对数据进行reset()操作即可供下次遍历,而each方法则需要,代码如下: ?php //a $arr=array(a=abc,b=123,c=true); //b //$arr=range(a,d); //1 for($i=0;$isizeof($arr);$i++) echo $arr[$i]., ; echo br
  for循环只对数字索引有限,for和foreach遍历结束后不需要对数据进行reset()操作即可供下次遍历,而each方法则需要,代码如下:
 
  <?php
  //a
  $arr=array('a'=>'abc','b'=>123,'c'=>true);
  //b
  //$arr=range('a','d');
   
  //1    
  for($i=0;$i<sizeof($arr);$i++)
      echo $arr[$i].', ';
  echo '<br />';
   
  //2
  foreach($arr as $key)
      echo "$key, ";
  echo '<br />';
   
  //3
  foreach($arr as $key=>$val)
      echo "$key-$val, ";
  echo '<br />';
   
  //4
  reset($arr);
  while($item=each($arr)){
      echo $item['key'].'-'.$item['value'].', ';
  }//开源代码phpfensi.com
  echo '<br />';
   
  //5
  reset($arr);
  while(list($key,$val)=each($arr)){
      echo "$key-$val, ";
  }
  echo '<br />';
  ?>
  使用语句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进行初始化得到关联数组,输出如下:
 
  a, b, c, d,
  a, b, c, d,
  0-a, 1-b, 2-c, 3-d,
  0-a, 1-b, 2-c, 3-d,
  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是通用的循环结构

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读