php的数组遍历函数回调匿名函数
<?php
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function test(&$n){
return $n*$n;
}
$time0 = microtime_float();
$a = array(1=>1, 2=>2, 3=>3, 4=>4, 5=>5);
$b = array_map(create_function("&$n","return $n=$n*$n;"), $a);
print_r($b);
$time1=microtime_float();
$a = array(1=>1, 2=>2, 3=>3, 4=>4, 5=>5);
$b=array();
foreach($a as $k=>$v){
$b[$k]=$v*$v;
}
print_r($b);
$time2=microtime_float();
$a = array(1=>1, 2=>2, 3=>3, 4=>4, 5=>5);
array_walk($a,create_function("&$n","return $n=$n*$n;"));
print_r($a);
$time3=microtime_float();
$a = array(1=>1, 2=>2, 3=>3, 4=>4, 5=>5);
$b = array_map("test", $a);
print_r($b);
$time4=microtime_float();
echo "</br>";
echo $time1-$time0;
echo "</br>";
echo $time2-$time1;
echo "</br>";
echo $time3-$time2;
echo "</br>";
echo $time4-$time3;
本以为array_walk,array_map的速度会快于foreach,可没想到速到是
array_map:0.00055694580078125 foreach:0.00015997886657715 array_walk:0.00047588348388672 array_map[named]:0.00042819976806641
愿闻指教!
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
