[PHP] array_map, foreach 性能分析

简单分析一下是用array_map好,还是foreach大法好:

实验前先准备数组 $a 和 $b ,每个数组都有 1024个key 

$a = [['a'=>1]];
$b = [['b'=>2]];
for($i = 1;$i<=10;$i++){
    $a = array_merge($a,$a);
    $b = array_merge($b,$b);
}

目标:把$a 和 $b 结合成一个新数组

先看看用foreach大法处理,

//程序运行时间
$t1 = microtime(true);
$new_arr = [];
foreach($a as $k=>$v){
    $new_arr[] =  array_merge($v,$b[$k]);
}
$t2 = microtime(true);
echo '耗时   '.($t2-$t1).'   <br>'."\n";

array_map 处理

$t1 = microtime(true);
$new_arr = array_map('array_merge',$a,$b);
$t2 = microtime(true);
echo 'array_map:耗时   '.($t2-$t1).'   <br>'."\n";

array_map 换一种写法:

$t1 = microtime(true);
$new_arr = array_map(function ($v1,$v2){
    return array_merge($v1,$v2);
},$a,$b);
$t2 = microtime(true);
echo 'array_map写法2:耗时   '.($t2-$t1).'   <br>'."\n";

当前测试环境php版本:

PHP 7.0.12 (cli) (built: Oct 13 2016 11:04:07) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

运行结果:

运行了8次的结果,发现 array_map在写法不同,耗时也不一样,基本上foreach介于两种写法之间,

虽然本次测试可能具有片面性,但是笔者认为,如果不考虑性能的,从代码优雅性,优先选择自带函数array_map,

简洁的代码能解决的问题,为何要满篇的foreach

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值