array_reduce

Iteratively reduce the array to a single value using a callback function

&reftitle.description; `mixed` `array_reduce` `array` `array` `callable` `callback` `mixed` `initial`&null;

`array_reduce` applies iteratively the `callback` function to the elements of the `array`, so as to reduce the array to a single value.

&reftitle.parameters;

`array`

- The input array.

`callback`

- `mixed```callback`` `mixed` `carry` `mixed` `item`

  `carry`

- Holds the return value of the previous iteration; in the case of the first iteration it instead holds the value of `initial`.

`item`

- Holds the value of the current iteration.

`initial`

- If the optional `initial` is available, it will be used at the beginning of the process, or as a final result in case the array is empty.

&reftitle.returnvalues;

Returns the resulting value.

If the array is empty and `initial` is not passed, `array_reduce` returns &null;.

&reftitle.changelog;

&Version; | &Description;
&array.changelog.by-ref;

&reftitle.examples;

### `array_reduce` example

    <?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"
    ?>

&reftitle.seealso;

- `array_filter`
- `array_map`
- `array_unique`
- `array_count_values`