Bird
Raised Fist0
PHPprogramming~5 mins

Closures in array functions in PHP - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a closure in PHP?
A closure is an anonymous function that can capture variables from its surrounding scope. It allows you to use variables outside the function inside it.
Click to reveal answer
beginner
How do closures help with array functions like array_map or array_filter?
Closures let you write small, custom functions directly inside array functions to process or filter array elements without defining a separate named function.
Click to reveal answer
intermediate
Explain the use of the 'use' keyword in closures with array functions.
The 'use' keyword lets a closure access variables from the parent scope by copying them into the closure, so you can use external values inside the anonymous function.
Click to reveal answer
beginner
Example: What does this code output?
 $nums = [1, 2, 3];
 $factor = 3;
 $result = array_map(function($n) use ($factor) { return $n * $factor; }, $nums);
 print_r($result); 
It outputs: Array ( [0] => 3 [1] => 6 [2] => 9 ) because the closure multiplies each number by 3 using the captured $factor variable.
Click to reveal answer
intermediate
Why might you prefer closures in array functions over named functions?
Closures keep the code concise and close to where it's used, improving readability and avoiding cluttering the code with many small named functions.
Click to reveal answer
What keyword allows a closure to access variables from outside its own scope in PHP?
Athis
Buse
Cstatic
Dglobal
Which PHP function commonly uses closures to transform array elements?
Aarray_push
Barray_merge
Carray_pop
Darray_map
What type of function is a closure in PHP?
AAnonymous function
BNamed function
CRecursive function
DStatic function
In this code, what is the role of the closure?
array_filter($arr, function($x) { return $x > 10; });
ATo filter elements greater than 10
BTo add elements to the array
CTo sort the array
DTo reverse the array
What happens if you omit the 'use' keyword when trying to access an external variable inside a closure?
AThe variable is automatically global
BThe closure can still access the variable
CYou get an error or undefined variable inside the closure
DThe closure ignores the variable silently
Explain how closures work with array functions in PHP and why the 'use' keyword is important.
Think about how you pass extra data into the anonymous function.
You got /4 concepts.
    Describe a simple example of using a closure with array_map to multiply each element by a factor.
    Imagine you have a list of numbers and want to multiply each by 3.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using a closure inside PHP array functions like array_map or array_filter?
      easy
      A. To define a small, unnamed function that processes array elements inline
      B. To declare a global variable accessible inside the array
      C. To create a new array without any function
      D. To convert arrays into strings automatically

      Solution

      1. Step 1: Understand what a closure is

        A closure is a small, unnamed function that can be used directly where needed.
      2. Step 2: Role in array functions

        Closures let you write the logic for processing each array element inline, making code concise and clear.
      3. Final Answer:

        To define a small, unnamed function that processes array elements inline -> Option A
      4. Quick Check:

        Closure = small inline function [OK]
      Hint: Closures are small functions used directly inside array calls [OK]
      Common Mistakes:
      • Thinking closures declare global variables
      • Confusing closures with array conversion functions
      • Assuming closures create arrays without functions
      2. Which of the following is the correct syntax to use a closure with array_filter to keep only even numbers from an array $numbers?
      easy
      A. array_filter($numbers, function $n { return $n % 2 == 0; });
      B. array_filter($numbers, function($n) { return $n % 2 == 0; });
      C. array_filter($numbers, function($n) => $n % 2 == 0;);
      D. array_filter($numbers, function($n) { $n % 2 == 0; });

      Solution

      1. Step 1: Check closure syntax

        Correct closure syntax uses function($param) { return expression; }.
      2. Step 2: Validate each option

        array_filter($numbers, function($n) { return $n % 2 == 0; }); uses correct syntax with return statement. array_filter($numbers, function $n { return $n % 2 == 0; }); misses parentheses. array_filter($numbers, function($n) => $n % 2 == 0;); uses arrow syntax incorrectly. array_filter($numbers, function($n) { $n % 2 == 0; }); lacks return keyword.
      3. Final Answer:

        array_filter($numbers, function($n) { return $n % 2 == 0; }); -> Option B
      4. Quick Check:

        Closure syntax needs parentheses and return [OK]
      Hint: Closures need parentheses and return keyword inside curly braces [OK]
      Common Mistakes:
      • Omitting parentheses around parameters
      • Using arrow syntax incorrectly in PHP 7+
      • Forgetting to return a value inside closure
      3. What will be the output of the following PHP code?
      $nums = [1, 2, 3, 4];
      $result = array_map(function($x) { return $x * 3; }, $nums);
      print_r($result);
      medium
      A. [0, 3, 6, 9]
      B. [1, 2, 3, 4]
      C. [3, 6, 9, 12]
      D. Syntax error

      Solution

      1. Step 1: Understand array_map with closure

        array_map applies the closure to each element, multiplying by 3.
      2. Step 2: Calculate each element

        1*3=3, 2*3=6, 3*3=9, 4*3=12, so result is [3, 6, 9, 12].
      3. Final Answer:

        [3, 6, 9, 12] -> Option C
      4. Quick Check:

        Multiply each by 3 = [3,6,9,12] [OK]
      Hint: array_map applies closure to each element and returns new array [OK]
      Common Mistakes:
      • Expecting original array unchanged
      • Confusing array_map with array_filter
      • Thinking output is a string, not array
      4. Identify the error in this PHP code using a closure with array_filter:
      $values = [10, 15, 20];
      $filtered = array_filter($values, function($v) {
        if ($v > 10) {
          return true;
        }
      });
      print_r($filtered);
      medium
      A. The closure does not return false for values <= 10, causing unexpected filtering
      B. The array_filter function requires a named function, not a closure
      C. The array_filter call is missing the array parameter
      D. The closure syntax is invalid without a semicolon after return

      Solution

      1. Step 1: Analyze closure return behavior

        The closure returns true only if value > 10, but returns nothing (null) otherwise.
      2. Step 2: Understand array_filter behavior

        array_filter expects explicit boolean returns. Returning implicit null (falsy) for values <=10 removes them but can cause unexpected filtering behavior.
      3. Final Answer:

        The closure does not return false for values <= 10, causing unexpected filtering -> Option A
      4. Quick Check:

        Closure must return true or false explicitly [OK]
      Hint: Always return true or false explicitly in closures for array_filter [OK]
      Common Mistakes:
      • Not returning false explicitly in closure
      • Thinking closures must be named functions
      • Missing array parameter in array_filter
      5. Given an array $data = [1, 2, 3, 4, 5, 6], how can you use a closure with array_filter and array_map together to get an array of squares of only the odd numbers?
      hard
      A. array_filter(fn($x) => $x % 2 !== 0, array_map($data, fn($x) => $x * $x));
      B. array_filter(array_map($data, fn($x) => $x * $x), fn($x) => $x % 2 !== 0);
      C. array_map(array_filter($data, fn($x) => $x % 2 !== 0), fn($x) => $x * $x);
      D. array_map(fn($x) => $x * $x, array_filter($data, fn($x) => $x % 2 !== 0));

      Solution

      1. Step 1: Filter odd numbers first

        Use array_filter with closure to keep only odd numbers: fn($x) => $x % 2 !== 0.
      2. Step 2: Map squares of filtered numbers

        Apply array_map with closure to square each filtered number: fn($x) => $x * $x.
      3. Step 3: Combine calls correctly

        Pass filtered array as second argument to array_map, so filtering happens before mapping.
      4. Final Answer:

        array_map(fn($x) => $x * $x, array_filter($data, fn($x) => $x % 2 !== 0)); -> Option D
      5. Quick Check:

        Filter odds then map squares [OK]
      Hint: Filter first, then map to transform filtered results [OK]
      Common Mistakes:
      • Reversing order of array_map and array_filter
      • Passing arguments in wrong order
      • Using array_map or array_filter with wrong parameter order
      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