牛骨文教育服务平台(让学习变的简单)
博文笔记

php的数组遍历函数回调匿名函数

创建时间:2011-11-10 投稿人: 浏览次数:2812
<?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
愿闻指教!
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。