不同情境下替换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) }