$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 ) 使用回调函数迭代地将数组简化为单一的值