Array reduce function in PHP - Time & Space Complexity
When using the array reduce function, it's important to know how the time it takes grows as the array gets bigger.
We want to find out how many steps the reduce function needs when working on arrays of different sizes.
Analyze the time complexity of the following code snippet.
$array = [1, 2, 3, 4, 5];
$result = array_reduce($array, function($carry, $item) {
return $carry + $item;
}, 0);
This code sums all numbers in the array using array_reduce.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The callback function runs once for each item in the array.
- How many times: Exactly as many times as there are elements in the array.
As the array gets bigger, the number of times the callback runs grows directly with the number of items.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 callback calls |
| 100 | 100 callback calls |
| 1000 | 1000 callback calls |
Pattern observation: The work grows evenly as the array size grows.
Time Complexity: O(n)
This means the time to finish grows in a straight line with the number of items in the array.
[X] Wrong: "array_reduce runs faster than looping because it's a built-in function."
[OK] Correct: The reduce function still processes each item one by one, so it takes time proportional to the array size, just like a loop.
Understanding how array_reduce works helps you explain how built-in functions handle data and why their speed depends on input size, a useful skill in coding interviews.
"What if the callback function inside array_reduce called another loop over the array? How would the time complexity change?"
Practice
array_reduce do?Solution
Step 1: Understand the purpose of array_reduce
The function takes an array and a callback to combine elements into one value.Step 2: Compare with other array functions
Unlike sorting or filtering, array_reduce accumulates values into one result.Final Answer:
It combines all elements of an array into a single value using a callback function. -> Option BQuick Check:
array_reduce = combine elements [OK]
- Confusing array_reduce with sorting functions
- Thinking it filters elements instead of combining
- Assuming it splits arrays into parts
array_reduce in PHP?Solution
Step 1: Recall the official function signature
The correct order is array, callback, then optional initial value.Step 2: Check each option's parameter order
Only array_reduce(array $array, callable $callback, mixed $initial = null) matches the correct order and types.Final Answer:
array_reduce(array $array, callable $callback, mixed $initial = null) -> Option DQuick Check:
array first, callback second, initial last [OK]
- Swapping callback and array parameters
- Placing initial value before callback
- Misordering parameters causing errors
$numbers = [1, 2, 3, 4];
$result = array_reduce($numbers, function($carry, $item) {
return $carry + $item;
}, 0);
echo $result;Solution
Step 1: Understand the callback function
The callback adds the current item to the carry (accumulated sum).Step 2: Calculate the sum step-by-step
Starting with 0, add 1, then 2, then 3, then 4: 0+1=1, 1+2=3, 3+3=6, 6+4=10.Final Answer:
10 -> Option AQuick Check:
Sum of 1+2+3+4 = 10 [OK]
- Forgetting initial value causes null carry
- Concatenating instead of adding numbers
- Expecting product instead of sum
array_reduce:
$values = [];
$result = array_reduce($values, function($carry, $item) {
return $carry + $item;
});
echo $result;Solution
Step 1: Check initial value usage
No initial value is given, so $carry starts as null.Step 2: Understand effect on empty array
With empty array and no initial, array_reduce returns null without calling the callback.Final Answer:
Missing initial value causes $carry to be null. -> Option CQuick Check:
Initial value needed for empty arrays [OK]
- Assuming callback parameters are reversed
- Thinking array_reduce fails on empty arrays without initial
- Ignoring PHP syntax for echo
['apple', 'banana', 'cherry'], how can you use array_reduce to create a single string with all fruits separated by commas (e.g., 'apple,banana,cherry')?Solution
Step 1: Understand the goal
We want to join strings with commas into one string.Step 2: Design the callback
Callback should add a comma between carry and item, starting with empty string.Step 3: Avoid leading comma
Use a condition to avoid comma before first item or trim later.Final Answer:
Use array_reduce with callback concatenating carry and item with a comma, initial value as empty string. -> Option AQuick Check:
Concatenate strings with commas using array_reduce [OK]
- Adding strings as numbers causing errors
- Not providing initial value causing null carry
- Using multiplication on strings
Ready to prove it?
Pass the test and this pattern moves unknown
