-
php 数组遍历性能的比较
for循环只对数字索引有限,for和foreach遍历结束后不需要对数据进行reset()操作即可供下次遍历,而each方法则需要,代码如下:
- <?php
- //a
- $arr=array('a'=>'abc','b'=>123,'c'=>true);
- //b
- //$arr=range('a','d');
- //1
- for($i=0;$i<sizeof($arr);$i++)
- echo $arr[$i].', ';
- echo '<br />';
- //2
- foreach($arr as $key)
- echo "$key, ";
- echo '<br />';
- //3
- foreach($arr as $key=>$val)
- echo "$key-$val, ";
- echo '<br />';
- //4
- reset($arr);
- while($item=each($arr)){
- echo $item['key'].'-'.$item['value'].', ';
- }//开源代码phpfensi.com
- echo '<br />';
- //5
- reset($arr);
- while(list($key,$val)=each($arr)){
- echo "$key-$val, ";
- }
- echo '<br />';
- ?>
使用语句a $arr=array('a'=>'abc','b'=>123,'c'=>true); 对$arr进行初始化得到数字索引数组,输出如下:
, , ,abc, 123, 1,a-abc, b-123, c-1,a-abc, b-123, c-1,a-abc, b-123, c-1, 使用语句b $arr=range('a','d'); 对$arr进行初始化得到关联数组,输出如下:
- a, b, c, d,
- a, b, c, d,
- 0-a, 1-b, 2-c, 3-d,
- 0-a, 1-b, 2-c, 3-d,
- 0-a, 1-b, 2-c, 3-d,
经过反复多次测试,结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。foreach比while大约快20% ~ 30%左右,随后再把数组下标增加到500000、5000000测试结果也一样,但从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反,原因应该是,foreach是PHP内部实现,而while是通用的循环结构.
出处:http://www.phpfensi.com/php/20140905/5022.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式