array_map

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

array_mapЗастосовує зворотній виклик до всіх елементів зазначених масивів

Опис

array_map(callable $callback, array $array1, array $... = ?): array

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"
  }
}

Прогляньте також

  • array_filter() - Filters elements of an array using a callback function
  • array_reduce() - Iteratively reduce the array to a single value using a callback function
  • array_walk() - Apply a user supplied function to every member of an array