Функция array_map() в языке PHP
Для работы с массивами данных, представляющими собой один из вариантов хранения информации, когда значения идут по одному либо в паре с ключом, в PHP предусмотрено множество функций, в числе которых присутствует array_map(). Она позволяет применять над PHP-массивами callback-функции, то есть созданные самостоятельно при написании кода для конкретной программы.
Структура
array_map($callable, $array, $arrays_additional);
array_map() принимает следующие параметры:
- callable – функция, которая будет применена к array и, если указано, ещё и к arrays_additional. Может равняться null в некоторых случаях, тогда результатом применения array_map()будет выступать входной массив.
- array– массив, на который будет наложена функция callable.
- arrays_additional(необязательный) – дополнительные массивы, которые будут обрабатываться с помощью callable.
Словом callable называются функции, которые можно написать самостоятельно. Они могут содержать в себе другие функции (собственные и уже предусмотренные), но не поддерживают структурные единицы языка, которыми выступают echo, print, isset, unset и некоторые другие. Численность параметров, передаваемых для callback-функции, должна быть одинаковой с количеством массивов, обрабатываемых посредством array_map().
Callback-функции накладываются на все компоненты массивов, приведённых в array и arrays_additional. Их можно поместить «как есть» либо, что повысит удобность чтения кода и откроет некоторые возможности, посредством переменных, объявленных заранее, до задействования array_map().
array_map() была представлена ещё в PHP 4 и по-прежнему доступна в новейшей, восьмой спецификации языка.
Примеры использования
Арифметические операции
Этот код умножит каждое число, входящее в массив, трижды на само себя (возведёт в куб):
<?php
functiontriple($num){
return ($num * $num * $num);
}$array = [1, 2, 3, 4, 5, 6, 7];
$array_updated = array_map(‘triple’, $array);
print_r($array_updated);
Вывод входного массива
Если параметр callback равен null, результатом выполнения array_map() станет входной массив. Его можно будет отобразить с помощью print_r():
<?php
$array = array(«Moscow», «Berlin», «London», «Minsk»);
$array_display = array_map(null, $array_display);
print_r($array_display); # Результат: то же самое, что и print_r($array);