php array_walk , array_reduce和array_filter函数
2016-12-30 14:58
267 查看
1.array_walk:将数组中的元素(键+值)依次取出传给处理的函数,函数处理完就完了,没有返回值.
$arr1=array( 'name'=>'zhangsan', 'age'=>300, );
array_walk($arr1,function($val,$key){ echo '参数: '.$key.' 值: '.$val.'<br />'; });
结果:
参数: name 值: zhangsan 参数: age 值: 300
2.array_reduce:将数组中的元素依次传给处理的函数,处理的函数会返回一个最终的结果,作为array_reduce的返回值.
$arr2=array(array('id'=>1,'name'=>'lilei'),array('id'=>2,'name'=>'tom'),array('id'=>4,'name'=>'hanmei'));
//获取上面数组的所有id,放到一个数组中
function array_id($arid,$ele){//第一个参数是存放返回值的变量,第二个参数是数组中的元素$arid[]=$ele['id']; //取得每个小数组的id,放入第一个参数中return $arid; //将结果返回,这里会替换第一个参数中的内容,然后传第二个小数组进来,把id放入第一个参数,然后再替换掉第一个参数的值}
$res=array_reduce($arr2,'array_id',array('id'=>10));//这里的第三个参数如果填写的话,这个参数会作为数组的第一个元素传入处理的函数var_dump($res);
结果:
array(4) { ["id"]=> int(10) [0]=> int(1) [1]=> int(2) [2]=> int(4) } //可以看到10被放在了前面输出
3.array_filter:将数组中的元素依次传给处理的函数,处理函数返回结果如果是真,那么将当前元素放入临时数组,如果为假,略过当前元素,最后将临时数组作为array_filter的返回值.
$arr=array('nandi'=>'fuck','kaizen'=>'hello','zhangsan'=>'happy');function filter($word){ //依次传入数组元素 if($word=='fuck'){ return false; //返回假,表示略过当前元素 } return true; //返回真,将当前元素写入临时数组}$res=array_filter($arr,'filter');var_dump($res);
结果:
array(2) { ["kaizen"]=> string(5) "hello" ["zhangsan"]=> string(5) "happy" } //可以看到敏感字符被过滤,而且键被保留,也就是说关联数组,索引数组通用
相关文章推荐
- PHP array_map()和array_walk的区别
- PHP用foreach来表达array_walk/array_filter/array_map/array_reduce
- php array_map与array_walk使用对比
- PHP array_map()和array_walk的区别
- php array_map 和 array_reduce 代码要优雅
- 第79篇Elasticsearch搜索引擎研究及array_walk_recursive及arsort
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- Array.prototype.reduce()
- php中array_map和array_walk的使用对比
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- array.c PHP array_chunk 函数
- JavaScript - reduce方法,reduceRight方法 (Array)
- php array_intersect比array_diff快(附详细的使用说明)
- php array_walk 对数组中的每个元素应用用户自定义函数详解
- php中的array_map,array_walk以及匿名函数
- array_walk与array_map 的不同
- reduce 方法 (Array) (JavaScript)
- ES5 中的Array.prototype.reduce( )方法
- 巧用array_map()和array_reduce()替代foreach循环
- 别在 array_walk 中 unset 元素,用array_filter