array_reduce— 用回调函数迭代地将数组简化为单一的值
mixed array_reduce ( array $array
, callable $callback
[, mixed $initial
= NULL
] )
callback【
mixed callback ( mixed $carry
, mixed $item
) carry
--携带上次迭代里的值; 如果本次迭代是第一次,那么这个值是 initial
。item
--携带了本次迭代的值。】
initial
【如果指定了可选参数 initial
,该参数将在处理开始前使用,或者当处理结束,数组为空时的最后一个结果。】
例:
$res = [
'0' => [
'a' => 'you',
'b' => 'me'
],
'1' => [
'c' => 'li',
'd' => 'op'
]
];
$res = array_reduce($res,function($result,$value) {
return array_merge($result,array_values($value));
},array());
var_dump($res);
输出:
array(4) {
[0]=>
string(3) "you"
[1]=>
string(2) "me"
[2]=>
string(2) "li"
[3]=>
string(2) "op"
}
array_filter — 用回调函数过滤数组中的单元
array array_filter ( array $array
[, callable $callback
[, int $flag
= 0 ]] ) 返回过滤后的数组。
array
--要循环的数组
callback
--使用的回调函数,如果没有提供 callback
函数, 将删除 array
中所有等值为 FALSE
的条目。
flag
--决定callback
接收的参数形式:
ARRAY_FILTER_USE_KEY
-callback
接受键名作为的唯一参数ARRAY_FILTER_USE_BOTH
-callback
同时接受键名和键值
例:
function odd($var)
{
// returns whether the input integer is odd
return($var & 1);
}
function even($var)
{
// returns whether the input integer is even
return(!($var & 1));
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
echo "Odd :\n";
print_r(array_filter($array1, "odd"));//1,3,5
echo "Even:\n";
print_r(array_filter($array2, "even"));//2,4,6
array_map — 为数组的每个元素应用回调函数
array_map ( callable $callback
, array $array1
[, array $...
] )
参数
callback
--回调函数,应用到每个数组里的每个元素。
array1
--数组,遍历运行 callback
函数。
...
数组列表,每个都遍历运行 callback
函数。
返回值----返回数组,包含 callback
函数处理之后 array1
的所有元素。
例:
function cube($n)
{
return($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
输出:
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)