php array_map和foreach比较


当使用for时,效运行时间需要spend3.9999485015869ms
当使用array_map时,运行的时间需要spend5.000114440918ms
但是当运行foreach时,运行时间需要spend2.000093460083ms




其实for 和foreach的效率是差不多的,就是array_map的效率有点低



<?php  
set_time_limit(0);  
$s_time = microtime(true);  
$a = range(1, 10000);  

  
$c = array();  
// for ($i = 0; $i < 10000; $i++) {  
    // $c[] = $a[$i] * $a[$i];  
// }  
// foreach($a as $key => $value) {  
     // $c[] = $value * $value;  
// }  
//回调函数中传入的第一个参数的值为第一个数组的值,第二个参数为第二个数组的值,依次类推  

$c = array_map(function ($a){  
    return $a * $a;  
} , $a);  
var_dump(count($c));  
$f_time = microtime(true);  
$s_time = ($f_time - $s_time) * 1000;  
echo 'spend' . $s_time . 'ms';  
?>  




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提到了遍历外部数组中的元素时,遇到了嵌套foreach导致输出多次的问题。如果你想避免这个问题,可以考虑使用其他方法代替嵌套foreach循环。有几种方法可以实现这个目标。 首先,你可以使用PHP中的array_map函数。这个函数可以将一个回调函数应用到数组的每个元素上,并返回一个新的数组。通过将一个函数作为参数传递给array_map,你可以在一个循环中处理多个数组,并将结果保存在一个新的数组中。 另外,你还可以使用PHP中的array_walk_recursive函数。这个函数可以递归地遍历一个数组,并对每个元素应用一个回调函数。使用array_walk_recursive函数,你可以避免嵌套foreach循环,并且只需在一个循环中处理多个数组。 此外,你还可以考虑使用PHP中的array_reduce函数。这个函数可以将一个回调函数应用于数组的所有元素,并返回一个单一的值。通过定义一个自定义的回调函数,你可以在一个循环中处理多个数组,并将结果合并为一个单一的值。 综上所述,如果你想避免嵌套foreach循环,可以尝试使用array_map、array_walk_recursive或array_reduce等函数来处理多个数组的元素。这些方法可以提供更简洁和高效的处理方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [php – 嵌套的foreach()](https://blog.csdn.net/weixin_34051133/article/details/116090042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Thinkphp的volist标签嵌套循环使用教程](https://download.csdn.net/download/weixin_38605604/13985176)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [MyBatis使用foreach批量插入,foreach套查询](https://blog.csdn.net/Bernie_7/article/details/123606679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值