本文实例讲述了php回调函数处理数组操作。分享给大家供大家参考,具体如下:
array_reduce— 用回调函数迭代地将数组简化为单一的值
mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )
- callback【mixed callback ( mixed $carry , mixed $item ) carry--携带上次迭代里的值; 如果本次迭代是第一次,那么这个值是 initial。item --携带了本次迭代的值。】
- initial【如果指定了可选参数 initial,该参数将在处理开始前使用,或者当处理结束,数组为空时的最后一个结果。】
例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$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同时接受键名和键值
例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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 的所有元素。
例:
1
2
3
4
5
6
7
|
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
)
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/qq_42176520/article/details/100140395