Bird
Raised Fist0
PHPprogramming~10 mins

Closures as callbacks in PHP - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a closure that prints a message.

PHP
<?php
$message = function() { echo [1]; };
$message();
?>
Drag options to blanks, or click blank then click option'
A"Hello, world!"
BHello, world!
Cecho "Hello, world!"
Dprint("Hello, world!")
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to put quotes around the string.
Trying to echo inside the closure argument.
2fill in blank
medium

Complete the code to pass a closure as a callback to array_map.

PHP
<?php
$numbers = [1, 2, 3];
$squares = array_map([1], $numbers);
print_r($squares);
?>
Drag options to blanks, or click blank then click option'
Afunction($n) { echo $n; }
Bfunction($n) { return $n * $n; }
Cfn($n) => $n + $n
Dfunction $n { return $n * $n; }
Attempts:
3 left
💡 Hint
Common Mistakes
Missing parentheses around the parameter.
Using echo instead of return.
3fill in blank
hard

Fix the error in the closure that uses a variable from the parent scope.

PHP
<?php
$multiplier = 3;
$multiply = function($n) [1] {
    return $n * $multiplier;
};
echo $multiply(5);
?>
Drag options to blanks, or click blank then click option'
Aimport ($multiplier)
Bwith ($multiplier)
Cuse ($multiplier)
Dcapture ($multiplier)
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect keywords like 'with' or 'import'.
Not including the variable in the use clause.
4fill in blank
hard

Fill both blanks to create a closure that modifies a variable by reference.

PHP
<?php
$count = 0;
$increment = [1] use ([2]) {
    $count++;
};
$increment();
echo $count;
?>
Drag options to blanks, or click blank then click option'
Afunction()
B&$count
C$count
Dfunction(&$count)
Attempts:
3 left
💡 Hint
Common Mistakes
Not using the ampersand to pass by reference.
Trying to pass the variable as a parameter instead of use clause.
5fill in blank
hard

Fill all three blanks to create a closure that filters an array using a condition.

PHP
<?php
$words = ['apple', 'bee', 'cat', 'dog'];
$minLength = 3;
$longWords = array_filter($words, function([1]) use ([2]) {
    return strlen([3]) > [2];
});
print_r($longWords);
?>
Drag options to blanks, or click blank then click option'
A$word
B$minLength
D$length
Attempts:
3 left
💡 Hint
Common Mistakes
Using inconsistent variable names.
Not passing the external variable with use.

Practice

(1/5)
1. What is a closure in PHP when used as a callback?
easy
A. A special variable type for storing data
B. A named function that cannot access outside variables
C. An anonymous function that can be passed as an argument
D. A PHP keyword for ending loops

Solution

  1. Step 1: Understand what a closure is

    A closure is an anonymous function, meaning it has no name and can be created on the fly.
  2. Step 2: Recognize closures as callbacks

    Closures can be passed as arguments to other functions to customize behavior, making them useful as callbacks.
  3. Final Answer:

    An anonymous function that can be passed as an argument -> Option C
  4. Quick Check:

    Closure = anonymous function callback [OK]
Hint: Closures are nameless functions passed as arguments [OK]
Common Mistakes:
  • Thinking closures must have names
  • Confusing closures with variables
  • Believing closures cannot be passed as arguments
2. Which of the following is the correct syntax to define a closure as a callback in PHP?
easy
A. array_map(function $x { return $x * 2; }, [1, 2, 3]);
B. array_map(function($x) { $x * 2; }, [1, 2, 3]);
C. array_map(function => $x * 2, [1, 2, 3]);
D. array_map(function($x) { return $x * 2; }, [1, 2, 3]);

Solution

  1. Step 1: Check closure syntax

    The correct syntax for an anonymous function uses the keyword function followed by parentheses with parameters, then braces with the function body.
  2. Step 2: Validate the return statement

    The closure must explicitly return the value to be used by array_map. array_map(function($x) { return $x * 2; }, [1, 2, 3]); correctly returns $x * 2.
  3. Final Answer:

    array_map(function($x) { return $x * 2; }, [1, 2, 3]); -> Option D
  4. Quick Check:

    Correct closure syntax = array_map(function($x) { return $x * 2; }, [1, 2, 3]); [OK]
Hint: Use function($param) { return value; } for closures [OK]
Common Mistakes:
  • Omitting parentheses around parameters
  • Missing return keyword inside closure
  • Using arrow (=>) incorrectly in closure
3. What will be the output of the following PHP code?
$numbers = [1, 2, 3];
$result = array_map(function($n) { return $n + 5; }, $numbers);
print_r($result);
medium
A. Array (1, 2, 3, 5)
B. [6, 7, 8]
C. [5, 6, 7]
D. [1, 2, 3]

Solution

  1. Step 1: Understand array_map with closure

    The closure adds 5 to each element of the array $numbers.
  2. Step 2: Calculate each element

    1+5=6, 2+5=7, 3+5=8, so the resulting array is [6, 7, 8].
  3. Final Answer:

    [6, 7, 8] -> Option B
  4. Quick Check:

    Each element + 5 = [6,7,8] [OK]
Hint: array_map applies closure to each element [OK]
Common Mistakes:
  • Confusing original array with result
  • Forgetting closure return value
  • Misreading array_map behavior
4. Identify the error in this PHP code using a closure as a callback:
$multiplier = 3;
$numbers = [1, 2, 3];
$result = array_map(function($n) { return $n * $multiplier; }, $numbers);
print_r($result);
medium
A. The variable $multiplier is not accessible inside the closure
B. array_map cannot accept closures as callbacks
C. Missing semicolon after array_map call
D. The closure must be named to access external variables

Solution

  1. Step 1: Check variable scope inside closure

    Variables outside a closure are not accessible inside unless passed with use.
  2. Step 2: Identify missing use keyword

    The closure needs use ($multiplier) to access the external variable.
  3. Final Answer:

    The variable $multiplier is not accessible inside the closure -> Option A
  4. Quick Check:

    External vars need use() in closures [OK]
Hint: Use 'use' to access outside variables in closures [OK]
Common Mistakes:
  • Assuming closures access all outside variables automatically
  • Thinking closures must be named to access variables
  • Believing array_map rejects closures
5. How can you modify this PHP code to correctly multiply each number by an external variable using a closure as a callback?
$factor = 4;
$nums = [2, 4, 6];
$results = array_map(function($num) { return $num * $factor; }, $nums);
print_r($results);
hard
A. Add use ($factor) after the function parentheses
B. Declare $factor as global inside the closure
C. Pass $factor as a second argument to array_map
D. Replace closure with a named function

Solution

  1. Step 1: Understand variable scope in closures

    To access an external variable inside a closure, you must explicitly import it using use.
  2. Step 2: Apply use ($factor) syntax

    Modify the closure to function($num) use ($factor) { return $num * $factor; } to access $factor.
  3. Final Answer:

    Add use ($factor) after the function parentheses -> Option A
  4. Quick Check:

    use() imports external vars into closures [OK]
Hint: Use 'use' keyword to bring external variables inside closures [OK]
Common Mistakes:
  • Trying to access external variables without use()
  • Using global keyword inside closures incorrectly
  • Passing extra arguments to array_map
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