The array map function helps you change every item in a list quickly. It makes a new list with the changed items.
Array map function in PHP
<?php function callback_function($item) { // change $item and return it return $item; } $new_array = array_map('callback_function', $original_array); ?>
The callback function is called for each item in the original array.
array_map returns a new array with the changed items, original stays the same.
<?php $numbers = [1, 2, 3]; $new_numbers = array_map(fn($num) => $num + 1, $numbers); print_r($new_numbers);
<?php $words = ['apple', 'banana', 'cherry']; $upper_words = array_map('strtoupper', $words); print_r($upper_words);
<?php $empty = []; $result = array_map(fn($x) => $x * 2, $empty); print_r($result);
<?php $single = [10]; $doubled = array_map(fn($x) => $x * 2, $single); print_r($doubled);
This program shows how to use array_map to convert a list of prices from dollars to euros. It prints the original list and the converted list.
<?php // Original array of prices in dollars $prices_in_dollars = [10, 20, 30, 40]; // Function to convert dollars to euros (assume 1 dollar = 0.9 euros) function convert_to_euros($price_in_dollars) { return $price_in_dollars * 0.9; } // Print original prices echo "Original prices in dollars:\n"; print_r($prices_in_dollars); // Use array_map to convert all prices $prices_in_euros = array_map('convert_to_euros', $prices_in_dollars); // Print converted prices echo "Prices converted to euros:\n"; print_r($prices_in_euros); ?>
Time complexity is O(n) because it changes each item once.
Space complexity is O(n) because it makes a new array of the same size.
Common mistake: forgetting to return the changed item in the callback function.
Use array_map when you want to change every item in a list and keep the same order and size.
array_map applies a function to every item in an array and returns a new array.
The original array stays the same.
Works with empty arrays and arrays with one item too.
Practice
array_map do?Solution
Step 1: Understand the purpose of array_map
The function applies a given callback function to each element of the input array.Step 2: Identify the output of array_map
It returns a new array with the results of the callback function applied to each element.Final Answer:
Applies a function to each element of an array and returns a new array -> Option DQuick Check:
array_map = apply function to array elements [OK]
- Thinking array_map modifies the original array
- Confusing array_map with array_filter
- Assuming array_map merges arrays
array_map in PHP?Solution
Step 1: Recall the function signature
The correct syntax is array_map(callback_function, array_to_process).Step 2: Match the options with the syntax
array_map(function, array); matches the correct order: function first, then array.Final Answer:
array_map(function, array); -> Option AQuick Check:
array_map(callback, array) syntax [OK]
- Swapping the order of function and array
- Using arrow or assignment syntax incorrectly
- Using object method syntax instead of function call
$numbers = [1, 2, 3]; $result = array_map(fn($n) => $n * 2, $numbers); print_r($result);
Solution
Step 1: Understand the callback function
The callback doubles each number: $n * 2.Step 2: Apply the callback to each element
1*2=2, 2*2=4, 3*2=6, so the new array is [2, 4, 6].Final Answer:
[2, 4, 6] -> Option AQuick Check:
Each element doubled = [2, 4, 6] [OK]
- Expecting original array unchanged
- Confusing the callback operation
- Thinking print_r outputs a string, not array
array_map:$arr = [1, 2, 3];
$result = array_map('double', $arr);
function double($x) {
return $x * 2;
}
print_r($result);Solution
Step 1: Check function definition and usage
The function double is defined after the array_map call, but PHP allows this because functions are hoisted.Step 2: Verify syntax and function type
array_map accepts named functions as callbacks, and semicolons are correctly placed.Final Answer:
No error, code runs correctly -> Option BQuick Check:
Named function callback works fine [OK]
- Assuming function must be defined before use
- Thinking only anonymous functions work in array_map
- Missing semicolon errors where none exist
['apple', 'banana', 'cherry'], how can you use array_map to create a new array with the length of each string?Solution
Step 1: Identify the correct function to get string length
In PHP,strlen()returns the length of a string.Step 2: Apply strlen in array_map callback
Usingfn($s) => strlen($s)applies length calculation to each string.Final Answer:
array_map(fn($s) => strlen($s), ['apple', 'banana', 'cherry']); -> Option CQuick Check:
Use strlen() for string length in array_map [OK]
- Using count() which counts array elements, not string length
- Trying to access string length with dot notation
- Using non-existent size() function
Ready to prove it?
Pass the test and this pattern moves unknown
