PHP遍历数组的方法汇总


Posted in PHP onApril 30, 2015

今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个。顺便写个文章总结下,如果总结不全还请朋友们指出

第一、foreach()

foreach()是一个用来遍历数组中数据的最简单有效的方法。

<?php 
    $urls= array('aaa','bbb','ccc','ddd'); 
    foreach ($urls as $url){ 
      echo "This Site url is $url! <br />"; 
    } 
?>

显示结果:

This Site url is aaa 
This Site url is bbb 
This Site url is ccc 
This Site url is ddd

第二、while() 和 list(),each()配合使用。

<?php 
    $urls= array('aaa','bbb','ccc','ddd'); 
    while(list($key,$val)= each($urls)) { 
      echo "This Site url is $val.<br />"; 
    } 
?>

显示结果:

This Site url is aaa 
This Site url is bbb 
This Site url is ccc 
This Site url is ddd

第三、for()运用for遍历数组

<?php 
    $urls= array('aaa','bbb','ccc','ddd'); 
    for ($i= 0;$i< count($urls); $i++){ 
      $str= $urls[$i]; 
      echo "This Site url is $str.<br />"; 
    } 
?>

显示结果:

This Site url is aaa 
This Site url is bbb 
This Site url is ccc 
This Site url is ddd

有时候有人也在问这几种遍历数组的方法哪个更快捷些呢,下面做个简单的测试就明白了
=========== 下面来测试三种遍历数组的速度 ===========
一般情况下,遍历一个数组有三种方法,for、while、foreach。其中最简单方便的是foreach。下面先让我们来测试一下共同遍历一个有50000个下标的一维数组所耗的时间。

<?php 
  $arr= array(); 
  for($i= 0; $i< 50000; $i++){ 
  $arr[]= $i*rand(1000,9999); 
  } 
  function GetRunTime() 
  { 
  list($usec,$sec)=explode(" ",microtime()); 
  return ((float)$usec+(float)$sec); 
  } 
  ###################################### 
  $time_start= GetRunTime(); 
  for($i= 0; $i< count($arr); $i++){ 
  $str= $arr[$i]; 
  } 
  $time_end= GetRunTime(); 
  $time_used= $time_end- $time_start; 
  echo 'Used time of for:'.round($time_used, 7).'(s)<br /><br />'; 
  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)<br /><br />'; 
  unset($str, $key, $val, $time_start, $time_end, $time_used); 
  ###################################### 
  $time_start= GetRunTime(); 
  foreach($arr as$key=> $val){ 
  $str= $val; 
  } 
  $time_end= GetRunTime(); 
  $time_used= $time_end- $time_start; 
  echo 'Used time of foreach:'.round($time_used, 7).'(s)<br /><br />'; 
  ?>

测试结果:

Used time of for:0.0228429(s) 
Used time of while:0.0544658(s) 
Used time of foreach:0.0085628(s)

经过反复多次测试,结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。原因应该是,foreach是PHP内部实现,而while是通用的循环结构。所以,在通常应用中foreach简单,而且效率高。在PHP5下,foreach还可以遍历类的属性。

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
PHP产生随机字符串函数
Dec 06 PHP
Adodb的十个实例(清晰版)
Dec 31 PHP
php5数字型字符串加解密代码
Apr 24 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
php汉字转拼音的示例
Feb 27 PHP
帝国cms目录结构分享
Jul 06 PHP
php获取远程文件大小
Oct 20 PHP
php 生成签名及验证签名详解
Oct 26 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 PHP
thinkPHP框架中layer.js的封装与使用方法示例
Jan 18 PHP
php实现根据IP地址获取其所在省市的方法
Apr 30 #PHP
PHP实现根据银行卡号判断银行
Apr 29 #PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 #PHP
php实现中文字符截取防乱码方法汇总
Apr 29 #PHP
WIN8.1下搭建PHP5.6环境
Apr 29 #PHP
php筛选不存在的图片资源
Apr 28 #PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 #PHP
You might like
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
CI框架Session.php源码分析
2014/11/03 PHP
微信access_token的获取开发示例
2015/04/16 PHP
PHP异常处理Exception类
2015/12/11 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
python win32 简单操作方法
2017/05/25 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
如何卸载python插件
2020/07/08 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
幼儿园运动会入场词
2014/02/10 职场文书
《木笛》教学反思
2014/03/01 职场文书
总经理人事任命书
2014/06/05 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
爱护公物演讲稿
2014/09/09 职场文书
2014年行政部工作总结
2014/11/19 职场文书
大学生思想道德自我评价
2015/03/09 职场文书