# array_reduce

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

array_reduce — 用回调函数迭代地将数组简化为单一的值

### 说明

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

array_reduce() 将回调函数 `callback` 迭代地作用到 `array` 数组中的每一个单元中，从而将数组简化为单一的值。

### 参数

`array`

  输入的 array。

`callback`
  callback ( mixed `$carry` , mixed `$item` ) : mixed
  `carry`

    携带上次迭代里的值； 如果本次迭代是第一次，那么这个值是 `initial`。

  `item`

    携带了本次迭代的值。

`initial`

  如果指定了可选参数 `initial`，该参数将在处理开始前使用，或者当处理结束，数组为空时的最后一个结果。

### 返回值

返回结果值。

`initial` 参数，array_reduce() 返回 `NULL`。

### 更新日志

版本 | 说明
--- | ---
5.3.0 | 修改 `initial` 类型，允许传入 mixed，之前只能是 integer。

### 范例

Example #1 array_reduce() 例子

    <?php
    function sum($carry, $item)
    {
        $carry += $item;
        return $carry;
    }

    function product($carry, $item)
    {
        $carry *= $item;
        return $carry;
    }

    $a = array(1, 2, 3, 4, 5);
    $x = array();

    var_dump(array_reduce($a, "sum")); // int(15)
    var_dump(array_reduce($a, "product", 10)); // int(1200), because: 10*1*2*3*4*5
    var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
    ?>

### 参见

- array_filter() - 用回调函数过滤数组中的单元
- array_map() - 为数组的每个元素应用回调函数
- array_unique() - 移除数组中重复的值
- array_count_values() - 统计数组中所有的值