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 22 PHP
PHP字符串 ==比较运算符的副作用
Oct 21 PHP
php中设置index.php文件为只读的方法
Feb 06 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
用mysql_fetch_array()获取当前行数据的方法详解
Jun 05 PHP
php cookie使用方法学习笔记分享
Nov 07 PHP
async和DOM Script文件加载比较
Jul 20 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
php自动提交表单的方法(基于fsockopen与curl)
May 09 PHP
php类的自动加载操作实例详解
Sep 28 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
php实现根据身份证获取精准年龄
Feb 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
python编码最佳实践之总结
2016/02/14 Python
python实现决策树分类算法
2017/12/21 Python
Python读取图片为16进制表示简单代码
2018/01/19 Python
对pandas中to_dict的用法详解
2018/06/05 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Python中的__init__作用是什么
2020/06/09 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
珍珠奶茶店创业计划书
2014/01/11 职场文书
公司合作意向书
2014/04/01 职场文书
企业文化宣传标语
2014/06/09 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
先进员工事迹材料
2014/12/20 职场文书
班委竞选稿范文
2015/11/21 职场文书
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL