Функция array_map()

Версия PHP - 4 >= 4.0.6

array_map() - применяется обратный вызов/callback элементов данного массива.

Описание функции array_map()

array array_map (mixed callback, array arr1 [, array arr2...])

array_map() возвращает массив, содержащий все элементы массива arr1 после применения callback-функции к каждому из них. Количество параметров, принимаемых callback-функцией, должно совпадать с количеством массивов, переданных в array_map().

Пример 1 функции array_map()

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() - использование массивов

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);

Это даст:

// printout для $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 )  // printout для $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-функции.

Пример 3. Создание массива массивов

$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         )  )

<< array_keys() | Список функций | array_merge() >>