欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php回调函数处理数组操作示例

程序员文章站 2023-11-14 14:48:46
本文实例讲述了php回调函数处理数组操作。分享给大家供大家参考,具体如下:array_reduce— 用回调函数迭代地将数组简化为单一的值mixed array_reduce ( array $arr...

本文实例讲述了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
)