array_reduce()

1. 定义

该函数迭代地处理数组中的每个元素,将数组迭代成一个单一的值。

2. 语法

array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] ) : mixed

3. 参数说明

参数 可选性 数据类型 描述
$array 必需 数组 被调用回调函数的数组
$callback 必需 可回调类型 回调函数
$initial 可选 mixed 第一个被回调函数调用的参数,默认为NULL

其中,callback函数接受两个参数,第一个参数是上次迭代的值,如果本次迭代是第一次,那么该值为$initial;第二个参数是本次迭代的值。

4. 示例

<?php

// array_reduce()
// 将数组迭代为一个单一的值

$arr = ['name'=>'极速数据', 'business'=>'PHP教程', 'work'=>'API参考'];
function callback($carry, $item)
{
    return $carry.$item;
}
$res = array_reduce($arr, 'callback', '这个参数算是初始化的一个过程,会被第一个用到回调函数中');
var_dump($res);// 输出:string(111) "这个参数算是初始化的一个过程,会被第一个用到回调函数中极速数据PHP教程API参考"

// 对数组求和(简单的数组操作可以替换 foreach 循环了)
$arr = [1, 2, 3, 4, 5];
function callback2($carry, $item)
{
    return $carry+$item;
}
$res = array_reduce($arr, 'callback2');
var_dump($res);// 输出:int(15)

5. 延展阅读

  • array_filter():将数组中的每个值发送到指定的回调函数处理,如果回调函数返回 TRUE,则该元素被添加至返回的数组,键名不变
  • array_map():对数组中的每个元素都调用指定函数
  • array_unique():去除一维数组中的重复值,对每个值只保留第一次出现的键名
  • array_count_values():统计指定数组的键值信息,返回一个以键值为键名、对应键值出现的次数为键值的关联数组