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实现mysql数据库备份类
Mar 20 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
php ctype函数中文翻译和示例
Mar 21 PHP
PHP Session机制简介及用法
Aug 19 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
PHP的引用详解
Feb 22 PHP
PHP在linux上执行外部命令的方法
Feb 06 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
WordPress伪静态规则设置代码实例
Dec 10 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
Mysql的常用命令
2006/10/09 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
javascript时区函数介绍
2012/09/14 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
python动态网页批量爬取
2016/02/14 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
python:接口间数据传递与调用方法
2018/12/17 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
Python爬虫开发与项目实战
2020/12/16 Python
致1500米运动员广播稿
2014/02/07 职场文书
模具毕业生推荐信
2014/02/15 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
关于学习的决心书
2015/02/05 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
Oracle笔记
2021/04/05 Oracle
java实现面板之间切换功能
2022/06/10 Java/Android