The array reduce function helps you combine all items in an array into a single value. It is like adding or multiplying all numbers together step by step.
Array reduce function in PHP
<?php function array_reduce(array $array, callable $callback, mixed $initial = null): mixed { // $array is the list of items // $callback is a function that takes two inputs: the current result and the next item // $initial is the starting value for the result } ?>
The callback function must accept two parameters: the accumulator (result so far) and the current item.
The initial value is optional. If not given, the first array element is used as the initial value.
<?php $numbers = [1, 2, 3, 4]; $sum = array_reduce($numbers, function($carry, $item) { return $carry + $item; }, 0); echo $sum; // 10 ?>
<?php $words = ['Hello', ' ', 'World']; $sentence = array_reduce($words, function($carry, $item) { return $carry . $item; }, ''); echo $sentence; // Hello World ?>
<?php $empty = []; $result = array_reduce($empty, function($carry, $item) { return $carry + $item; }, 0); echo $result; // 0 ?>
<?php $single = [5]; $product = array_reduce($single, function($carry, $item) { return $carry * $item; }, 1); echo $product; // 5 ?>
This program shows how to use array_reduce to sum numbers, multiply them, find the maximum, and handle an empty array safely.
<?php // Create an array of numbers $numbers = [2, 4, 6, 8]; // Print the original array echo "Original array: "; print_r($numbers); // Use array_reduce to sum all numbers $sum = array_reduce($numbers, function($accumulator, $currentItem) { return $accumulator + $currentItem; }, 0); // Print the sum echo "Sum of numbers: " . $sum . "\n"; // Use array_reduce to find the product of all numbers $product = array_reduce($numbers, function($accumulator, $currentItem) { return $accumulator * $currentItem; }, 1); // Print the product echo "Product of numbers: " . $product . "\n"; // Use array_reduce to find the maximum number $max = array_reduce($numbers, function($accumulator, $currentItem) { return ($currentItem > $accumulator) ? $currentItem : $accumulator; }); // Print the maximum number echo "Maximum number: " . $max . "\n"; // Use array_reduce on an empty array with initial value $emptyArray = []; $sumEmpty = array_reduce($emptyArray, function($accumulator, $currentItem) { return $accumulator + $currentItem; }, 0); // Print result for empty array echo "Sum of empty array: " . $sumEmpty . "\n"; ?>
Time complexity is O(n) because it processes each item once.
Space complexity is O(1) as it uses a fixed amount of extra memory.
Common mistake: forgetting to provide an initial value can cause unexpected results with empty arrays.
Use array_reduce when you want to combine array items into one value. For simple sums, PHP also has array_sum which is faster.
array_reduce combines all items in an array into a single value using a callback function.
It works by carrying a result through each step and updating it with the current item.
Always consider providing an initial value to avoid errors with empty arrays.