<?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
愿闻指教!