PHP用foreach来表达array_walk/array_filter/array_map/array_reduce
2016-09-26 14:58
483 查看
PHP装逼玩函数式(回调匿名函数):
array_walk/array_filter/array_map/array_reduce:
遍历数组,回调函数.遍历一次,回调一次.
这些逻辑其实都可以用foreach来表达,而且更容易理解.
array_walk相当于foreach:
比如去除数组$arr元素的前后空白:
array_filter: 用回调函数过滤数组中的单元,返回过滤后的数组
PHP数组映射化简(MapReduce):
array_map/array_reduce
array_map: 将回调函数作用到给定数组的单元上
array_reduce: 用回调函数迭代地将数组简化(reduce)为单一的值
array_walk/array_filter/array_map/array_reduce:
遍历数组,回调函数.遍历一次,回调一次.
这些逻辑其实都可以用foreach来表达,而且更容易理解.
array_walk相当于foreach:
$arr = ['Client'=>'jQuery','Server'=>'PHP']; array_walk($arr, function($v, $k) { echo "键:$k 值:$v\n"; });
比如去除数组$arr元素的前后空白:
array_walk($arr, function(&$v) { $v = trim($v); }); foreach($arr as &$v) { $v = trim($v); }
array_filter: 用回调函数过滤数组中的单元,返回过滤后的数组
var_export( array_filter([1, 2, 3], function($v) { return $v > 1; }) ); 和 foreach([1, 2, 3] as $k => $v) { if($v > 1) { $tmp[$k] = $v; } } var_export($tmp); 都输出: array ( 1 => 2, 2 => 3, )
PHP数组映射化简(MapReduce):
array_map/array_reduce
array_map: 将回调函数作用到给定数组的单元上
var_export( array_map(function ($v) { return $v * $v; }, [1, 2, 3]) ); 和 foreach([1, 2, 3] as $v) { $tmp[] = $v * $v; } var_export($tmp); 都输出: array ( 0 => 1, 1 => 4, 2 => 9, )
array_reduce: 用回调函数迭代地将数组简化(reduce)为单一的值
//输出16,即10+1+2+3,其中10作为初始值. echo array_reduce([1, 2, 3], function($result, $item) { $result = $result + $item; return $result; }, 10); 用foreach表达: $result = 10; foreach([1, 2, 3] as $v) { $result = $result + $v; } echo $result;
相关文章推荐
- JS--Array的常用方法map、reduce、filter、forEach、indexOf
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- ES5中Array新增加的API接口 forEach map filter some every indexOf lastIndexOf reduce reduceRight
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- array之reduce/map/forEach/filter
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个现在就该使用的数组Array方法: indexOf/filter/forEach/map/reduce详解
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- JS中map、forEach、filter、reduce等Array新增方法的区别
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例(转)
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例