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,该参数将在处理开始前使用,或者当处理结束,数组为空时的最后一个结果。】

例:

  1. $res = [
  2. '0' => [
  3. 'a' => 'you',
  4. 'b' => 'me'
  5. ],
  6. '1' => [
  7. 'c' => 'li',
  8. 'd' => 'op'
  9. ]
  10. ];
  11. $res = array_reduce($res,function($result,$value) {
  12. return array_merge($result,array_values($value));
  13. },array());
  14. var_dump($res);

输出:

  1. array(4) {
  2. [0]=>
  3. string(3) "you"
  4. [1]=>
  5. string(2) "me"
  6. [2]=>
  7. string(2) "li"
  8. [3]=>
  9. string(2) "op"
  10. }

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. function odd($var)
  2. {
  3. // returns whether the input integer is odd
  4. return($var & 1);
  5. }
  6. function even($var)
  7. {
  8. // returns whether the input integer is even
  9. return(!($var & 1));
  10. }
  11. $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
  12. $array2 = array(6, 7, 8, 9, 10, 11, 12);
  13. echo "Odd :\n";
  14. print_r(array_filter($array1, "odd"));//1,3,5
  15. echo "Even:\n";
  16. 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. function cube($n)
  2. {
  3. return($n * $n * $n);
  4. }
  5. $a = array(1, 2, 3, 4, 5);
  6. $b = array_map("cube", $a);
  7. print_r($b);

输出:

  1. Array
  2. (
  3. [0] => 1
  4. [1] => 8
  5. [2] => 27
  6. [3] => 64
  7. [4] => 125
  8. )