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 相关文章推荐
php MsSql server时遇到的中文编码问题
Jun 11 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
laravel安装和配置教程
Oct 29 PHP
PHP+jquery实时显示网站在线人数的方法
Jan 04 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
PHP封装的HttpClient类用法实例
Jun 17 PHP
详解PHP队列的实现
Mar 14 PHP
Laravel实现批量更新多条数据
Apr 06 PHP
详解phpstorm2020最新破解方法
Sep 17 PHP
如何用PHP websocket实现网页实时聊天
May 26 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
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
python检测远程udp端口是否打开的方法
2015/03/14 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
对python中各个response的使用说明
2020/03/28 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
html5 标签
2009/07/16 HTML / CSS
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
“学雷锋活动月”总结
2014/03/09 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
初中作文评语
2014/12/25 职场文书
深入理解python协程
2021/06/15 Python