array_reduce()
array_reduce() — Iteratively reduce the array to a single value using a callback function.
Built-in function of PHP 8.5. The manual lists it as available in PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8. This page is the reference card: signature, parameters and return value, plus the changelog and the example the manual provides.
What it does
array_reduce() applies iteratively the callback function to the elements of the array, so as to reduce the array to a single value.
Signature
array_reduce(array $array, callable $callback, mixed $initial = null): mixed callback(mixed $carry, mixed $item): mixed
Parameters
| Parameter | Type | What it takes |
|---|---|---|
| $array | array | The input array. |
| $callback | callable | Holds the return value of the previous iteration; in the case of the first iteration it instead holds the value of initial. |
| $initial | mixed | 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. |
Return value
Returns the resulting value. If the array is empty and initial is not passed, array_reduce() returns null.
Example
A runnable snippet:
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"
Changelog
| Version | Change |
|---|---|
| 8.0.0 | If callback expects a parameter to be passed by reference, this function will now emit an E_WARNING. |
See also
array_filter(), array_map(), array_unique(), array_count_values()
All PHP 8.5 built-in functions
Reference card built from the PHP manual page array_reduce() (PHP documentation, CC BY 3.0). The page is generated from the manual, so the wording of the parameter and return value text follows php.net.