array_map、array_walk、array_reduce
不同情境下替换foreach,且效果更佳
array_map 遍历原数组,array_map()参数中有几个数组,自定义函数就接收几个参数,
在每个值上进行自定义函数处理,具有返回值,需要一个新数组来接收经过自定义函数处理的新数组
public function test($request)
{
$aa = array('aa', 'bb');
$bb = array_map(function($item) {
$item = $item . 'aa' ;
return $item;
}, $aa);
var_dump($aa);
echo'<br/>';
var_dump($bb);
}
//结果
array(2) { [0]=> string(2) "aa" [1]=> string(2) "bb" }
array(2) { [0]=> string(4) "aaaa" [1]=> string(4) "bbaa" }
上面这种是最佳选用array_map的情景,我们也可以把array_map当成foreach的普通遍历使用,比如我们可以不要返回值,在array_map的过程中直接改变某个值。
array_walk遍历数组, array_walk()更像是普通遍历,因为它返回一个bool值,我习惯用它来替换foreach,如何使用见代码
//处理9999.99异常值
function test()
{
$val = [12,10041,9999.99,9999.99,45,66,32,11,9999.99,20];
$sum = 0;
array_walk($val, function ($v,$k) use(&$val,&$sum){
if($v == 9999.99)
{
$val[$k] = '-';
}
$sum += $v;
});
var_dump($val);exit;
//结果array(12,10041,"-","-",45,66,32,11,"-",20);
var_dump($sum);exit;
//float(40226.97)
}
array_map、array_walk、array_reduce的更多相关文章
- 【转】php 之 array_filter、array_walk、array_map的区别
[转]php 之 array_filter.array_walk.array_map的区别 原文:https://blog.csdn.net/csdnzhangyiwei/article/detail ...
- array_map、array_walk、array_filter三个函数的区别
array_walk --- 使自定的函数能处理数组的每个元素 bool array_walk ( array &array, callback funcname [, mixed userd ...
- array_filter、array_walk、array_map的区别
<?php $arr=array( 1,2,3,4,5,6 ); function filter($var){ if($var%2==0) return true; } $data=array_ ...
- 【php学习】array_map,array_walk,array_filter的区别
array_map(function($v){return $v+1;}, $array); array_walk($array, function($v, $k){...}); array_filt ...
- array_walk、array_map、array_filter 的用法
array_walk.array_map.array_filter 和 foreach 都有循环对数组元素进行处理的功能. 一.array_walk 用法 1.循环数组,回调处理(并不修改数组元素的 ...
- php array_map与array_walk使用对比
array_map(): 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调函 ...
- php中array_map和array_walk的使用对比_php技巧
一.array_map() 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调 ...
- PHP一句话过狗、卫士、D盾等免杀思路!
原文转载于:http://www.legendsec.org/1701.html 觉得写得还算蛮科普的. 00x1.关键字拆分. 比如assert,可以写成 ‘a’.’ss’.’e’. ...
- Java集合类: Set、List、Map、Queue使用场景梳理
本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E ...
随机推荐
- Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...
- 【我们一起写框架】MVVM的WPF框架(三)—数据控件
这世上,没人能一次性写出完美无缺的框架:因为,任何一个框架都需要项目的淬炼,然后才能升华,趋近完美. 所以,框架是个反复修改的东西,最终形成的东西. 如果你学了一点技术,觉得自己可以写出框架了,觉得自 ...
- Python编程从入门到实践笔记——操作列表
Python编程从入门到实践笔记——操作列表 #coding=utf-8 magicians = ['alice','david','carolina'] #遍历整个列表 for magician i ...
- informix存储过程笔记
一.存储过程概述 存储过程是一个用户定义的函数,由存储过程语句(SPL) 和一组SQL语句组成,以可以执行代码形式存储在数据库中,和表.视图.索引等一样,是数据库的一种对象. 存储过程语言SPL(St ...
- 洛谷P2664 树上游戏(点分治)
题意 题目链接 Sol 神仙题..Orz yyb 考虑点分治,那么每次我们只需要统计以当前点为\(LCA\)的点对之间的贡献以及\(LCA\)到所有点的贡献. 一个很神仙的思路是,对于任意两个点对的路 ...
- Jetty 开发指南: 嵌入式开发之HelloWorld
Jetty 嵌入式之 HelloWorld 本节提供一个教程,演示如何快速开发针对Jetty API的嵌入式代码. 1. 下载 Jar 包 Jetty被分解为许多jar和依赖项,通过选择最小的jar集 ...
- 3.SDL落地方案
01.安全培训 安全意识培训(全员) 邮件安全 钓鱼邮件 邮件伪造 第三方转存 检查发件人 开启二次验证 邮件转发 第三方代收 邮件附件敏感信息加密 病毒防范 什么是木马病毒 我安装哪些杀毒软件? 定 ...
- 一种解决Android studio 3.0 Build报错的方法
问题背景: 最近在开始使用AndroidStudio3.0,刚好有一个开源的项目(Material-Movies),需要学习下.因为该项目比较早(2015年),而这段时间AndroidStudio和G ...
- springmvc流程图
- 简单概括下MongoDB 4.0 新特性
(1)跨文档事务支持 (ACID) 首个支持跨文档事务的NoSQL云数据库,将文档模型的速度,灵活性和功能与ACID保证相结合.现在,使用MongoDB解决各种用例变得更加容易. (2)40%迁移速度 ...