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