php foreach为啥比for效率高
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php foreach为啥比for效率高相关的知识,希望对你有一定的参考价值。
参考技术A (1)for是使用下标(偏移量)定位的.(2)foreach应该是使用类似循环子的机构
(3)对随机访问效率高的arraylist.
使用下标访问效率本身很高.foreach内部的循环子直接封装下标,自己实现的for比foreach更直接,效率稍高些,但差别不会太大,仍然在一个数量级上。
(4)如果使用插入和删除效率高的linkedlist,for基于下标访问会每次从头查询,效率会很低.foreach循环子使用高效的地址运算,效率会高.其差距将很大,完全不在一个数量级别.如果数组很大,差别可能会几百甚至上千倍. 参考技术B 总体来说,如果数据库过几十万了,才能看出来快一点还是慢一点,如果低于10万的循环,就不用测试了。php推荐用foreach。
循环数字数组时,for需要事先count($arr)计算数组长度,需要引入自增变量$i,每次循环都要进行条件判断$i<$c,然后自增$i++,输出数组元素时,$arr[$i]需要进行哈希操作.
而foreach循环数组时,指针会自动指向下一个元素,不需要计算数组长度,没有条件判断和自增变量,调用元素时也没有哈希操作,所以性能肯定要比for和while高.另外,for和while对存在键值映射的关联数组无能为力.所以,遍历数组,首选foreach.foreach也是我PHP里最喜欢的关键字,因为它确实强大.array_map/array_filter/array_walk遍历数组的方式和foreach一样,但需要执行回调函数,所以也比foreach慢.
以上是关于php foreach为啥比for效率高的主要内容,如果未能解决你的问题,请参考以下文章