PHP遍历数组的三种方法及效率对比分析

发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递

PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。

本文实例分析了PHP遍历数组的三种方法及效率对比。分享给大家供大家参考。具体分析如下:

今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个。顺便写个文章总结下,如果总结不全还请朋友们指出

第一、foreach()

foreach()是一个用来遍历数组中数据的最简单有效的方法。

$urls= array('aaa','bbb','ccc','ddd');

foreach ($urls as $url){

echo "This Site url is $url!
";

}

?>

显示结果:

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

第二、while() 和 list(),each()配合使用。

$urls= array('aaa','bbb','ccc','ddd');

while(list($key,$val)= each($urls)) {

echo "This Site url is $val.
";

}

?>

显示结果:

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

第三、for()运用for遍历数组

$urls= array('aaa','bbb','ccc','ddd');

for ($i= 0;$i< count($urls); $i++){

$str= $urls[$i];

echo "This Site url is $str.
";

}

?>

显示结果:

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个下标的一维数组所耗的时间。

$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)
';

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)
';

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)
';

?>

测试结果:

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遍历数组的几种方法

PHP循环遍历数组的3种方法list()、each()和while使用总结

PHP遍历数组的方法汇总

PHP中数组的三种排序方法分享

php遍历数组的方法集锦

PHP遍历数组的方法汇总

php实现快速排序的三种方法示例

php发送post请求的三种方法讲解

web server使用php生成web页面的三种方法总结

PHP删除文件夹的三种方法示例

php生成随机密码的三种方法小结

php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析相关推荐

  1. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析_php技巧

    本文实例分析了PHP遍历数组的三种方法及效率对比.分享给大家供大家参考.具体分析如下: 今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一 ...

  2. php 遍历 效率高,PHP遍历数组的三种方法及效率对比分析

    这篇文章主要介绍了PHP遍历数组的三种方法及效率对比,实例分析了foreach.while与for三种遍历数组的方法与相关的效率比对,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例分析了PHP遍 ...

  3. php高效遍历,PHP 遍历数组的三种方法及效率对比分析

    PHP 遍历数组的三种方法及效率对比分析 本文实例分析了 PHP 遍历数组的三种方法及效率对比分享给大家供大家参考具体分析如下: 今天有个朋友问我一个问题 php 遍历数组的方法, 告诉她了几个顺便写 ...

  4. 清空StringBuilder的三种方法及效率

    清空StringBuilder的三种方法及效率 大家知道对于字符串频繁拼接是使用stringbuilder.Append方法比使用string+=方法效率高很多,但有时需要清空stringbuilde ...

  5. python字符串连接的三种方法及其效率、适用场景详解

    python字符串连接的方法,一般有以下三种:方法1:直接通过加号(+)操作符连接website=& 39;python& 39;+& 39;tab& 39;+& ...

  6. JavaScript清空数组的三种方法及效率分析

    方式1,splice 复制代码代码如下: var ary = [1,2,3,4];  ary.splice(0,ary.length);  console.log(ary); // 输出 [],空数组 ...

  7. m.pythontab.com_python字符串连接的三种方法及其效率、适用场景详解

    python3.x拼接字符串一般有以下几种方法: 1. 直接通过(+)操作符拼接s = 'Hello'+' '+'World'+'!' print(s) 输出结果:Hello World! 使用这种方 ...

  8. lammps模拟技巧:高熵合金势函数设置三种方法

    大家好,我是小马老师. 本文继续介绍lammps模拟中的势函数设置方法. 在前面的文章中,介绍过高熵合金的建模:高熵合金建模 高熵合金包含的原子数较多,势函数的设置相对复杂,在平时一对一的咨询中,这种 ...

  9. 求无序数组的第K(大/小)数的三种方法

    题目描述:给定一个无序数组(长度为n)和一个正整数 K,让你求此数组中第K大的数 方法1:最简单的思路,你肯定会想到 先把数组排序,然后再取下标为K的对应数组元素.这种方法肯定是可行的,但是这种方法无 ...

最新文章

  1. 阮一峰老师的ES6入门:async 函数
  2. PHP对于浮点型的数据需要用不同的方法去解决
  3. 电路设计中电阻电容电感的选择原则
  4. 今天带你们走进缓存的雪崩、击穿、穿透基本概念
  5. android 树形目录结构的实现(包含源码)
  6. 四、Git多人开发:不同人修改了同文件的相同区域如何处理?
  7. java list%3ca%3e排序_Apache Solr 远程命令+XXE执行漏洞(CVE-2017-12629)
  8. 以CSGO为例 分析不同网络延时下FPS游戏同步的实现
  9. ChatForFun 公众号使用说明
  10. Diango博客--6.Markdown 文章自动生成目录
  11. bootstarp js设置列隐藏_Bootstrap框架----DataTables列表移动端适配定义隐藏列
  12. POJ1604 UVA568 UVALive5499 Just the Facts【模除+打表】
  13. Codeforces Round #456 (Div. 2): E. Prime Gift(折半枚举)
  14. 数据采集无线网服务器软件,WIFI智能数据盒
  15. python导入win32com.client出错
  16. 【CODETOOL】文件比较Beyond Compare使用介绍
  17. 如何把拼音放在文字的右侧,干货到,在WORD中怎么把拼音和汉字同排
  18. 5、DOC命令获取连接电脑热点的设备的mac、ip
  19. 红蜘蛛不受控制解决方案
  20. 最长可重叠的重复子串(2)

热门文章

  1. 归一化 vs 标准化 定量的分析
  2. 10个例子带你了解机器学习中的线性代数
  3. java中的关键字static(静态变量)和final定义常量
  4. 4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」
  5. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-08项目人力资源(Human Resource)管理...
  6. (7)Zabbix分布式监控proxy实现
  7. 努力成为优秀的工程师
  8. 【Joomla】本地化汇总
  9. ASP编程学习的28个观点
  10. mysql不能改路径到d盘_Windows Server 2008 R2修改MySQL 5.5数据库目录为D盘示例