php中array_reduce和array_map的用法
来源:互联网 发布:ping命令测试网络几兆 编辑:程序博客网 时间:2024/05/20 14:15
1、array_reduce( $arr , callable $callback )
使用回调函数迭代地将数组简化为单一的值。
其中$arr 为输入数组,$callback($result , $value)接受两个参数,$result为上一次迭代产生的值,$value是当前迭代的值。
使用array_reduce()替代foreach()循环最常用的一个业务场景也许就是数组求和,比如:
$arr = array('1','2','3'); //计算数组中数字的和 $sum = 0; foreach($arr as $v){ //使用 foreach循环计算 $sum += $v;// echo $sum } echo array_reduce($arr , function($result , $v){ //使用array_reduce()迭代求和 Return $result+$v; });
再比如,从数据库中查询出一组数据,接下来想得到他们的 id 值,拼接成类似 (1,2,3,4,5) 字符串,然后在 “SELECT * WHERE id in(1,2,3,4,5) ” 处理,这时候完全可以 foreach() 数组处理,其实也可以使用 array_reduce(),因为 array_reduce()就是“迭代地将数组简化为单一的值”,如下
$arr = array( array("id"=>1,'name'=>"a"), array("id"=>2,"name"=>"c"), array("id"=>3,"name"=>"d") ); echo array_reduce($arr , function($result , $v){ Return $result.','.$v['id']; });
在业务中遇到foreach循环处理,有时候我们就可以想想能不能像这样处理。
2、array_map(callback $callback , $arr) 返回用户自定义函数作用后的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
向array_map传入数组,出来的还是数组,而不是上面array_reduce()的一个值。所以,array_map()最简单的就是把callback函数作用到每个数组的值上,最常见的场景就是 intval()、trim() 数组中的值,在一些框架的源码中也经常见到,比如:
$arr = array('2','3','4','5');array_map('intval' , $arr);//在拼接sql查询的时候,很有用array_map('htmlspecialchars' , $arr);
虽然有时候foreach完全可以达到相同的效果,但是在代码中使用 array_map、array_reduce还有array_filter之类的函数,可以让代码更加的简洁,而不是一个php文件到处都是foreach循环。
array_map还可以结合数组函数array_shift(array_shift() 函数删除数组中第一个元素,并返回被删除元素的值。)将二维数组转换成一维数组,比如:
$arr = array( array("id"=>1,'name'=>"a"), array("id"=>2,"name"=>"c"), array("id"=>3,"name"=>"d") );array_map('array_shift',$arr);
- php中array_reduce和array_map的用法
- php array_map 和 array_reduce 代码要优雅
- PHP中array_map用法
- 巧用array_map()和array_reduce()替代foreach循环
- 巧用array_map()和array_reduce()替代foreach循环
- array_map和array_reduce替换for循环
- PHP中array_map的妙用
- php 中 array_map的使用
- PHP中array_reduce()使用
- PHP 函数 array_map() 和 call_user_func_array() 的妙用
- PHP 函数 array_map() 和 call_user_func_array() 的妙用
- PHP array_map()和array_walk的区别
- 数组编程:array_reduce array_map array_walk
- 206 php array_reduce的使用
- php array_reduce
- php array_walk , array_reduce和array_filter函数
- php 使用array_walk和array_map
- php array_map和foreach比较
- 宣告主权
- scala 中json 应用
- 第一次上机报告
- 第一次试验—1
- 3725: PA2014 Final Matryca|乱搞?
- php中array_reduce和array_map的用法
- c++第一次课程实验1
- logstash+elasticsearch+kibana搭建日志收集分析系统
- OpenCV - win7+x64+vs2013+opencv2.4.11 环境配置 (以及配置技巧)
- 第二周项目:输入一句话
- android 二维码的扫描与生成
- SmartClient之Data Integration
- 【小镇的技术天梯】渗透测试工具(1)dmitry
- 就拿胖子说事