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 相关文章推荐
AJAX for PHP简单表数据查询实例
Jan 02 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
为IP查询添加GOOGLE地图功能的代码
Aug 08 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
PHP中strtotime函数使用方法详解
Nov 27 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
PHP面向对象程序设计类的定义与用法简单示例
Dec 27 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
PHP实现的敏感词过滤方法示例
Mar 06 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 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
网络资源
2006/10/09 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
jQuery常见开发技巧详细整理
2013/01/02 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
python使用mysql的两种使用方式
2018/03/07 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
python实现移动木板小游戏
2020/10/09 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
销售自荐信
2013/10/22 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
计划生育证明书写要求
2014/09/17 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
2014年药房工作总结
2014/11/22 职场文书
休学证明范本
2015/06/19 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers