array_map
Функция array_map() возвращает массив ( array ), содержащий результаты применения callback -функции к соответствующему индексу array (и arrays , если указано больше массивов), используемого в качестве аргумента callback-функции. Количество параметров, передаваемых callback -функции, должно совпадать с количеством массивов, переданным функции array_map() .
Список параметров
callable , применяемая к каждому элементу в каждом массиве.
null может быть передан в качестве значения callback для выполнения zip операции с несколькими массивами. Если указан только array , array_map() вернет входной массив.
Массив, к которому применяется callback -функция.
Дополнительные массивы для обработки callback -функцией.
Возвращаемые значения
Возвращает массив, содержащий результаты применения callback -функции к соответствующему индексу array (и arrays , если указано больше массивов), используемого в качестве аргумента для callback-функции.
Возвращенный массив сохранит ключи аргумента массива тогда и только тогда, когда будет передан ровно один массив. Если передано более одного массива, возвращенный массив будет иметь последовательные целочисленные ключи.
Примеры
Пример #1 Пример использования array_map()
$a = [ 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() вместе с лямбда-функцией (начиная с PHP 5.3.0)
print_r ( array_map ( $func , range ( 1 , 5 )));
?>
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
Пример #3 Пример использования array_map() : обработка нескольких массивов
function map_Spanish ( $n , $m )
return [ $n => $m ];
>
$a = [ 1 , 2 , 3 , 4 , 5 ];
$b = [ ‘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] => Число 1 по-испански - uno [1] => Число 2 по-испански - dos [2] => Число 3 по-испански - tres [3] => Число 4 по-испански - cuatro [4] => Число 5 по-испански - cinco ) // вывод $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 Выполнение zip операции с массивами
$a = [ 1 , 2 , 3 , 4 , 5 ];
$b = [ ‘one’ , ‘two’ , ‘three’ , ‘four’ , ‘five’ ];
$c = [ ‘uno’ , ‘dos’ , ‘tres’ , ‘cuatro’ , ‘cinco’ ];
?php
$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 ) )
Пример #5 null callback только с array
Результат выполнения данного примера:
array(3) < [0]=>int(1) [1]=> int(2) [2]=> int(3) >
Пример #6 Использование array_map() со строковыми ключами
$arr = [ ‘stringkey’ => ‘value’ ];
function cb1 ( $a ) return [ $a ];
>
function cb2 ( $a , $b ) return [ $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 ));
?>?php
Результат выполнения данного примера:
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() — Фильтрует элементы массива с помощью callback-функции
- array_reduce() — Итеративно уменьшает массив к единственному значению, используя callback-функцию
- array_walk() — Применяет заданную пользователем функцию к каждому элементу массива
array_map
Функция array_map() возвращает массив, содержащий элементы array1 после их обработки callback -функцией. Количество параметров, передаваемых callback -функции, должно совпадать с количеством массивов, переданным функции array_map() .
Список параметров
Callback-функция, применяемая к каждому элементу в каждом массиве.
Массив, к которому применяется callback -функция.
Дополнительные массивы для обработки callback -функцией.
Возвращаемые значения
Возвращает массив, содержащий все элементы array1 после применения callback -функции к каждому из них.
Примеры
Пример #1 Пример использования array_map()
$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)
print_r ( array_map ( $func , range ( 1 , 5 )));
?>
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
Пример #3 Пример использования array_map() : обработка нескольких массивов
function show_Spanish ( $n , $m )
return( «Число $n по-испански — $m » );
>
?php
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] => Число 1 по-испански - uno [1] => Число 2 по-испански - dos [2] => Число 3 по-испански - tres [3] => Число 4 по-испански - cuatro [4] => Число 5 по-испански - cinco ) // вывод $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 Создание массива массивов
$a = array( 1 , 2 , 3 , 4 , 5 );
$b = array( «one» , «two» , «three» , «four» , «five» );
$c = array( «uno» , «dos» , «tres» , «cuatro» , «cinco» );
?php
$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 ) )
Если массив-аргумент содержит строковые ключи, то результирующий массив будет содержать строковые ключи тогда и только тогда, если передан ровно один массив. Если передано больше одного аргумента, то результирующий массив будет всегда содержать числовые ключи.
Пример #5 Использование array_map() со строковыми ключами
$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 ));
?>?php
Результат выполнения данного примера:
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() — Фильтрует элементы массива с помощью callback-функции
- array_reduce() — Итеративно уменьшает массив к единственному значению, используя callback-функцию
- array_walk() — Применяет заданную пользователем функцию к каждому элементу массива
- информация о типе callback
array_map
Функция array_map() возвращает массив, содержащий элементы arr1 после их обработки callback-функцией. Количество параметров, передаваемых callback-функции, должно совпадать с количеством массивов, переданным функции array_map() .
Список параметров
Callback-функция, применяемая к каждому элементу в каждом массиве.
Массив, к которому применяется callback-функция.
Дополнительные массивы для обработки callback-функцией.
Возвращаемые значения
Возвращает массив, содержащий все элементы arr1 после применения callback-функции к каждому из них.
Примеры
Пример #1 Пример использования array_map()
$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)
print_r ( array_map ( $func , range ( 1 , 5 )));
?>
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
Пример #3 Пример использования array_map() : обработка нескольких массивов
function show_Spanish ( $n , $m )
return( «Число $n по-испански — $m » );
>
?php
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] => Число 1 по-испански - uno [1] => Число 2 по-испански - dos [2] => Число 3 по-испански - tres [3] => Число 4 по-испански - cuatro [4] => Число 5 по-испански - cinco ) // вывод $d Array ( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ) )
Обычно при обработке двух или более массивов, они имеют одинаковую длину, так как функция обратного вызова применяется параллельно к соответствующим элементам массивов. Если массивы имеют различную длину, самый маленький из них дополняется элементами с пустыми значениями.
Интересным эффектом при использовании этой функции является создание массива массивов, что может быть достигнуто путем использования значения NULL в качестве имени callback-функции.
Пример #4 Создание массива массивов
$a = array( 1 , 2 , 3 , 4 , 5 );
$b = array( «one» , «two» , «three» , «four» , «five» );
$c = array( «uno» , «dos» , «tres» , «cuatro» , «cinco» );
?php
$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 ) )
Если массив-аргумент содержит строковые ключи, то результирующий массив будет содержать строковые ключи тогда и только тогда, если передан ровно один массив. Если передано больше одного аргумента, то результирующий массив будет всегда содержать числовые ключи.
Пример #5 Использование array_map() со строковыми ключами
$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 ));
?>?php
Результат выполнения данного примера:
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() — Фильтрует элементы массива с помощью callback-функции
- array_reduce() — Итеративно уменьшает массив к единственному значению, используя callback-функцию
- array_walk() — Применяет пользовательскую функцию к каждому элементу массива
- create_function() — Создаёт анонимную (lambda-style) функцию