$arr = ['a','b',1,2,3];
$new_arr = array_filter($arr,function($val){
return is_numeric($val);
});
var_dump($new_arr);
//返回结果
//array (size=3)
// 2 => int 1
// 3 => int 2
// 4 => int 3
$arr1 = [1,2,3,4,5];
$arr2 = [6,7,8,9,10];
//函数写前面,数组参数写后面
$new_arr = array_map(function($val1,$val2){
return $val1 + $val2;
},$arr1,$arr2);
var_dump($new_arr);
//返回结果
//array (size=5)
// 0 => int 7
// 1 => int 9
// 2 => int 11
// 3 => int 13
// 4 => int 15
//将数组中的元素用于某种操作
$arr = ['a','b','c'];
array_walk($arr,function($val,$key){
echo "{$key} is {$val} <br/>";
});
//返回结果
//0 is a
//1 is b
//2 is c
//改变数组中的值,传参的时候使用引用
array_walk($arr,function(&$val,$key){
$val .= $val;
});
var_dump($arr);
//array (size=3)
// 0 => string 'aa' (length=2)
// 1 => string 'bb' (length=2)
// 2 => string 'cc' (length=2)
array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值。
其中arr为输入数组,arr 为输入数组,arr为输入数组,callback($result , value)接受两个参数,value)接受两个参数,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;
});
$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'];
});
array_map() 可以处理多个数组,因此函数参数在前,数组参数在后,可以根据实际情况放入多个数组参数
array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值