php回调函数处理数组操作示例
本文实例讲述了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,该参数将在处理开始前使用,或者当处理结束,数组为空时的最后一个结果。】
例:
- $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
- )