1、array_reduce( callback ) 使用回調(diào)函數(shù)迭代地將數(shù)組簡化為單一的值。其中
callback(
value)接受兩個參數(shù),
value是當前迭代的值。
//數(shù)組求和
$arr = [1,2,3,4,5];
$sum = array_reduce($arr, function($result, $value){
return $result+$value;
});
echo $sum;
//字符串拼接
$arr = [
['id'=>1,'name'=>"c"],
['id'=>2,'name'=>"b"],
['id'=>3,'name'=>"a"]
];
$str = array_reduce($arr, function($result, $value){
return $result.",".$value['id'];
});
echo $str;
2吼野、array_map(callback arr) 返回用戶自定義函數(shù)作用后的數(shù)組×讲ǎ回調(diào)函數(shù)接受的參數(shù)數(shù)目應該和傳遞給 array_map() 函數(shù)的數(shù)組數(shù)目一致瞳步。
向array_map傳入數(shù)組,出來的還是數(shù)組腰奋,而不是上面array_reduce()的一個值单起。所以,array_map()最簡單的就是把callback函數(shù)作用到每個數(shù)組的值上劣坊,最常見的場景就是 intval()嘀倒、trim() 數(shù)組中的值.
$arr = array('2','3','4','5');
array_map('intval' , $arr);
array_map('htmlspecialchars' , $arr);
3、array_walk() 函數(shù)對數(shù)組中的每個元素應用用戶自定義函數(shù)局冰。在函數(shù)中括儒,數(shù)組的鍵名和鍵值是參數(shù)。處理二維數(shù)組用array_walk_recursive函數(shù)锐想。
$arr = ["aa", "bb"];
array_walk($arr, function(&$item){
$item = $item."ppp";
return $item;
});
var_dump($arr); //["aappp","bbppp"]
4帮寻、array_filter ( array callback [, int $flag = 0 ]] ) 依次將 array 數(shù)組中的每個值傳遞到 callback 函數(shù)。如果 callback 函數(shù)返回 true赠摇,則 array 數(shù)組的當前值會被包含在返回的結(jié)果數(shù)組中固逗。數(shù)組的鍵名保留不變。
array_filter會過濾掉任何值等于FALSE的值藕帜,也就是說 0值烫罩,空字符串,null洽故,都會被過濾贝攒。
$arr = array(1,2,3,'aaa'=>4,5);
$newArr = array_filter($arr,function($val) {
if ($val%2 == 0) {
return false;
}
return true;
});
var_dump($newArr); //[1,3,5]