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相当简单的分页类
Oct 02 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
PHP实现的多彩标签效果代码分享
Aug 21 PHP
php实现的双向队列类实例
Sep 24 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
php的4种常见运行方式
Mar 20 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
php 猴子摘桃的算法
Jun 20 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 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
php 数组二分法查找函数代码
2010/02/16 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
微信红包随机生成算法php版
2016/07/21 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
Javascript typeof 用法
2008/12/28 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
Python中最大递归深度值的探讨
2019/03/05 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
2014自主招生自荐信策略
2014/01/27 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技