(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
array_map — Застосовує зворотній виклик до всіх елементів зазначених масивів
array_map() повертає масив, що вміщує всі елементи
array1
після застосування
callback
-функції до кожного елемента. Кількість параметрів,
які приймає callback
-функція повинна
відповідати кількості масивів переданих до array_map()
callback
Callback-функція, що запускається для кожного елемента в кожному з переданих масивів.
array1
Масив, до якого застосовується callback
-функція.
...
Змінний список масива аргументів, до яких застосовується
callback
-функція.
Повертається масив, що містить всі елементи з масива array1
після застосування callback
-функції до кожного з них.
Приклад #1 Використовуючи array_map(), піднесення ряду чисел з масива в куб
<?php
function cube($n)
{
return($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>
Це створить $b, що має:
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
Приклад #2 Використання array_map() разом з lambda-функцією (починаючи з PHP 5.3.0)
<?php
$func = function($value) {
return $value * 2;
};
print_r(array_map($func, range(1, 5)));
?>
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
Приклад #3 Використання array_map() - робота з більшою кількістю масивів
<?php
function show_Spanish($n, $m)
{
return("The number $n is called $m in Spanish");
}
function map_Spanish($n, $m)
{
return(array($n => $m));
}
$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");
$c = array_map("show_Spanish", $a, $b);
print_r($c);
$d = array_map("map_Spanish", $a , $b);
print_r($d);
?>
Поданий вище приклад виведе:
// вивід $c Array ( [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ) // вивід $d Array ( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ) )
Зазвичай при використанні двох або більше масивів, вони мають однакову довжину, оскільки callback-функція застосовується паралельно до відповідних елементів. Якщо масиви мають не однакову довжину, кожен із коротших масивів буде доповнено пустими елементами, щоб відповідати довжині найдовшого із них.
Цікаве використання цієї функції для створення масива масивів,
що можна легко зробити за допомогою null
в якості імені callback-функції
Приклад #4 Створення масива масивів
<?php
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");
$c = array("uno", "dos", "tres", "cuatro", "cinco");
$d = array_map(null, $a, $b, $c);
print_r($d);
?>
Поданий вище приклад виведе:
Array ( [0] => Array ( [0] => 1 [1] => one [2] => uno ) [1] => Array ( [0] => 2 [1] => two [2] => dos ) [2] => Array ( [0] => 3 [1] => three [2] => tres ) [3] => Array ( [0] => 4 [1] => four [2] => cuatro ) [4] => Array ( [0] => 5 [1] => five [2] => cinco ) )
Якщо масив-аргумент містить рядкові ключі, то результуючий масив буде містити рядкові ключі тоді, і тільки тоді, коли передається рівно один масив. Якщо передано більше одного аргумента, то результуючий масив буде завжди мати цілочисельні (integer) ключі.
Приклад #5 Використання array_map() з рядковими ключами
<?php
$arr = array("stringkey" => "value");
function cb1($a) {
return array ($a);
}
function cb2($a, $b) {
return array ($a, $b);
}
var_dump(array_map("cb1", $arr));
var_dump(array_map("cb2", $arr, $arr));
var_dump(array_map(null, $arr));
var_dump(array_map(null, $arr, $arr));
?>
Поданий вище приклад виведе:
array(1) { ["stringkey"]=> array(1) { [0]=> string(5) "value" } } array(1) { [0]=> array(2) { [0]=> string(5) "value" [1]=> string(5) "value" } } array(1) { ["stringkey"]=> string(5) "value" } array(1) { [0]=> array(2) { [0]=> string(5) "value" [1]=> string(5) "value" } }