array_walk跟foreach遍历数组,在什么时候哪个的效率更高一些

array_walk和foreach遍历数组,在什么时候哪个的效率更高一些?
本帖最后由 lytreo650 于 2014-05-06 16:10:08 编辑
网上有一篇博客是对for,foreach,array_walk做了比较的,上面说如果调用函数arrar_walk的效率更高,但是我自己写的一个测试脚本,foreach还是比array_walk更快一些,是不是因为函数太简单了?那么在什么情况下array_walk的效率更高呢?什么时候应该用array_walk?
<?php
$test = array();
for($i = 0; $i<10000; $i++) {
$test[$i] = $i;
}

function add($arg) {
return $arg++;
}

$one_time = microtime();

foreach($test as $key => $value) {
add($value);
}

$two_time = microtime();

array_walk($test, function ($value) {
return $value++;
});

$three_time = microtime();

$foreach_time =  $two_time - $one_time;
$array_walk_time = $three_time - $two_time;

echo 'array_walk_time:=' . $array_walk_time . '<br/>';
echo 'foreach_time:=' . $foreach_time;


------解决方案--------------------
从 php4 开始就一直有人说
array_walk 优于 foreach 优于 for
也可以通过一些例子来说明

但是至少是 php5.4.20 颠覆了这一结论
你可用相同的例子来证明
for 优于 foreach 优于 array_walk

这样事实就回归了本原
测试例
http://www.cnblogs.com/niniwzw/archive/2008/06/03/1212535.html
http://www.nowamagic.net/academy/detail/1204408