Bird
Raised Fist0
PHPprogramming~20 mins

Array reduce function in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Array Reduce Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this PHP array_reduce example?

Consider the following PHP code using array_reduce. What will it output?

PHP
<?php
$numbers = [1, 2, 3, 4];
$result = array_reduce($numbers, function($carry, $item) {
    return $carry + $item;
}, 0);
echo $result;
?>
A24
B10
C1234
DError: Undefined variable
Attempts:
2 left
💡 Hint

Think about how array_reduce accumulates values starting from the initial value.

❓ Predict Output
intermediate
2:00remaining
What does this PHP code output when using array_reduce with strings?

Look at this PHP code that uses array_reduce to concatenate strings. What is the output?

PHP
<?php
$words = ['Hello', ' ', 'World', '!'];
$result = array_reduce($words, function($carry, $item) {
    return $carry . $item;
}, '');
echo $result;
?>
AError: Cannot concatenate
BHelloWorld!
CHello World!
DArray
Attempts:
2 left
💡 Hint

Remember that the dot operator . joins strings in PHP.

🔧 Debug
advanced
2:00remaining
Why does this PHP array_reduce code cause an error?

Examine this PHP code snippet. Why does it cause an error?

PHP
<?php
$values = [2, 4, 6];
$result = array_reduce($values, function($carry, $item) {
    return $carry * $item;
});
echo $result;
?>
ABecause the initial value for carry is missing, causing carry to be null on first call
BBecause multiplication operator is invalid in PHP
CBecause array_reduce requires a third argument to specify the array
DBecause echo cannot output numbers
Attempts:
2 left
💡 Hint

Think about what happens if you don't provide the initial value for carry.

📝 Syntax
advanced
2:00remaining
Which option shows the correct syntax for array_reduce with an initial value?

Choose the correct PHP syntax for using array_reduce with an initial value of 100.

A$result = array_reduce($arr, fn($carry, $item) => $carry + $item, 100);
B$result = array_reduce($arr, fn($carry, $item) => $carry + $item); 100;
C$result = array_reduce($arr, fn($carry, $item) => $carry + $item,);
D$result = array_reduce($arr, fn($carry, $item) => $carry + $item 100);
Attempts:
2 left
💡 Hint

Remember the third argument is the initial value and must be passed inside the parentheses.

🚀 Application
expert
3:00remaining
How many items are in the resulting array after this array_reduce operation?

Given this PHP code, how many items does the resulting array contain?

PHP
<?php
$items = [1, 2, 3, 4];
$result = array_reduce($items, function($carry, $item) {
    if ($item % 2 === 0) {
        $carry[] = $item * 10;
    }
    return $carry;
}, []);
print_r($result);
?>
A1
B4
C0
D2
Attempts:
2 left
💡 Hint

Count how many even numbers are in the original array.

Practice

(1/5)
1. What does the PHP function array_reduce do?
easy
A. It sorts the array elements in ascending order.
B. It combines all elements of an array into a single value using a callback function.
C. It filters elements of an array based on a condition.
D. It splits an array into smaller arrays.

Solution

  1. Step 1: Understand the purpose of array_reduce

    The function takes an array and a callback to combine elements into one value.
  2. Step 2: Compare with other array functions

    Unlike sorting or filtering, array_reduce accumulates values into one result.
  3. Final Answer:

    It combines all elements of an array into a single value using a callback function. -> Option B
  4. Quick Check:

    array_reduce = combine elements [OK]
Hint: Remember: array_reduce reduces array to one value [OK]
Common Mistakes:
  • Confusing array_reduce with sorting functions
  • Thinking it filters elements instead of combining
  • Assuming it splits arrays into parts
2. Which of the following is the correct syntax to use array_reduce in PHP?
easy
A. array_reduce(mixed $initial = null, array $array, callable $callback)
B. array_reduce(callable $callback, array $array, mixed $initial = null)
C. array_reduce(array $array, mixed $initial = null, callable $callback)
D. array_reduce(array $array, callable $callback, mixed $initial = null)

Solution

  1. Step 1: Recall the official function signature

    The correct order is array, callback, then optional initial value.
  2. Step 2: Check each option's parameter order

    Only array_reduce(array $array, callable $callback, mixed $initial = null) matches the correct order and types.
  3. Final Answer:

    array_reduce(array $array, callable $callback, mixed $initial = null) -> Option D
  4. Quick Check:

    array first, callback second, initial last [OK]
Hint: Remember: array first, callback second, initial last [OK]
Common Mistakes:
  • Swapping callback and array parameters
  • Placing initial value before callback
  • Misordering parameters causing errors
3. What is the output of the following PHP code?
$numbers = [1, 2, 3, 4];
$result = array_reduce($numbers, function($carry, $item) {
    return $carry + $item;
}, 0);
echo $result;
medium
A. 10
B. 24
C. 1234
D. Error

Solution

  1. Step 1: Understand the callback function

    The callback adds the current item to the carry (accumulated sum).
  2. 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.
  3. Final Answer:

    10 -> Option A
  4. Quick Check:

    Sum of 1+2+3+4 = 10 [OK]
Hint: Sum array with array_reduce and initial 0 [OK]
Common Mistakes:
  • Forgetting initial value causes null carry
  • Concatenating instead of adding numbers
  • Expecting product instead of sum
4. Identify the issue in this PHP code using array_reduce:
$values = [];
$result = array_reduce($values, function($carry, $item) {
    return $carry + $item;
});
echo $result;
medium
A. Callback function has wrong parameter order.
B. array_reduce cannot be used on empty arrays.
C. Missing initial value causes $carry to be null.
D. The echo statement is missing parentheses.

Solution

  1. Step 1: Check initial value usage

    No initial value is given, so $carry starts as null.
  2. Step 2: Understand effect on empty array

    With empty array and no initial, array_reduce returns null without calling the callback.
  3. Final Answer:

    Missing initial value causes $carry to be null. -> Option C
  4. Quick Check:

    Initial value needed for empty arrays [OK]
Hint: Always provide initial value to avoid null carry [OK]
Common Mistakes:
  • Assuming callback parameters are reversed
  • Thinking array_reduce fails on empty arrays without initial
  • Ignoring PHP syntax for echo
5. Given an array of strings ['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')?
hard
A. Use array_reduce with callback concatenating carry and item with a comma, initial value as empty string.
B. Use array_reduce with callback adding carry and item as numbers, initial value 0.
C. Use array_reduce with callback returning only the last item, no initial value.
D. Use array_reduce with callback multiplying carry and item, initial value 1.

Solution

  1. Step 1: Understand the goal

    We want to join strings with commas into one string.
  2. Step 2: Design the callback

    Callback should add a comma between carry and item, starting with empty string.
  3. Step 3: Avoid leading comma

    Use a condition to avoid comma before first item or trim later.
  4. Final Answer:

    Use array_reduce with callback concatenating carry and item with a comma, initial value as empty string. -> Option A
  5. Quick Check:

    Concatenate strings with commas using array_reduce [OK]
Hint: Concatenate strings with commas, start with empty string [OK]
Common Mistakes:
  • Adding strings as numbers causing errors
  • Not providing initial value causing null carry
  • Using multiplication on strings
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard