php处理数组foreach比for高,PHP中关于for 和 foreach 遍历数组的性能对比

之前在网上看到很多文章说 foreach 比 for 的性能要快 1倍,这么吓人,亲测了下。绝逼是骗人的,得因地制宜,看情况。我用的php 5.6测试如下:function addOne(&$item) { $item++; }

//产生一个10000的一个数组。

$max = 500000;

$test_arr = range(0, $max);

$temp = 0;

//$br = '
';

$br = "\n";

//我们分别用三种方法测试求这些数加上1的值的时间。

// for 的方法

$t = microtime(1);

for ($i = 0; $i < $max; $i++) $temp++;

echo microtime(1)-$t,": for 没有 操作数组$br";

$t = microtime(1);

foreach ($test_arr as $k => &$v) $temp++;

echo microtime(1)-$t,": foreach 没有 操作数组$br$br";

$t = microtime(1);

for ($i = 0; $i < $max; $i++) $test_arr[$i]++;

echo microtime(1)-$t,": for 直接 操作数组$br";

$t = microtime(1);

foreach ($test_arr as $k => &$v) $v++;

echo microtime(1)-$t,": foreach 直接 操作数组$br$br";

$t = microtime(1);

for ($i = 0; $i < $max; $i++) addOne($test_arr[$i]);

echo microtime(1)-$t,": for 调用函数 操作数组$br";

$t = microtime(1);

foreach ($test_arr as $k => &$v) addOne($v);

echo microtime(1)-$t,": foreach 调用函数 操作数组$br";

$t = microtime(1);

array_walk($test_arr, 'addOne');

echo microtime(1)-$t,": array_walk $br";

网页执行结果:0.037818908691406: for 没有 操作数组

0.04827094078064: foreach 没有 操作数组

0.046481847763062: for 直接 操作数组

0.048525810241699: foreach 直接 操作数组

0.13782787322998: for 调用函数 操作数组

0.12900590896606: foreach 调用函数 操作数组

0.0001070499420166: array_walk

命令行执行结果:0.032783985137939: for 没有 操作数组

0.049838066101074: foreach 没有 操作数组

0.056764125823975: for 直接 操作数组

0.048169136047363: foreach 直接 操作数组

0.10591602325439: for 调用函数 操作数组

0.083390951156616: foreach 调用函数 操作数组

0.14780592918396: array_walk看结果使用php-fpm执行结果,for明显有优势

在命令行下执行 foreach 有优势

我估计使用apache 服务器执行效果又有所不同吧。

所以 foreach 比 for快的结论是不成立的。有人说 for 每次要判断,所以比foreach慢

其实foreach也得判断,他判断指针是不是空呀。

for和foreach 具体使用得看场景,环境。

array_walk区别好大的说。不知道为毛。有空再测试一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值