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
愿闻指教!
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。