php 数组遍历性能的比较
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-05 10:19:08 浏览: 评论:0
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是通用的循环结构.
Tags: php数组遍历 php性能比较
- 上一篇:PHP中数组排序函数详解
- 下一篇:php过滤空数组方法与过滤数组为空的元素
相关文章
- ·php二维数组排序与遍历(2014-09-19)
- ·PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)(2021-03-13)
- ·PHP多维数组遍历方法(2种实现方法)(2021-06-29)
- ·PHP数组遍历的几种常见方式总结(2021-11-08)
- ·php数组遍历类与用法示例(2021-11-23)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)