Функция array_map в PHP: подробное руководство
Функция array_map в PHP позволяет применять callback-функцию к каждому элементу array и возвращать новый array с результатами.
Функция array_map в PHP — незаменимый инструмент для преобразования array данных. Она позволяет разработчикам применять callback-функцию к каждому элементу array, а затем возвращать новый array с результатами. Это универсальный и мощный способ обработки данных в PHP, который можно использовать в самых разных задачах.
Как работает array_map?
Базовый синтаксис функции array_map выглядит следующим образом:
Синтаксис функции array_map в PHP
array_map(callback, array1, array2, ...);Здесь аргумент callback — это функция, которая будет применена к каждому элементу array. Остальные аргументы — это array для обработки. Рассмотрим следующий пример:
Пример использования функции array_map в PHP
В этом коде определена простая функция square, которая принимает число и возвращает его квадрат. Затем функция array_map применяет эту функцию к каждому элементу array $numbers. Результатом является новый array $squared, содержащий квадраты исходных чисел.
Примечание о длинах array: когда в array_map передаётся несколько array, обработка продолжается до исчерпания самого длинного из них. Если длины array не совпадают, недостающие элементы в более коротких array автоматически считаются равными null.
Примечание о современном синтаксисе: в PHP 7.4+ можно использовать стрелочные функции для лаконичных callback-ов. Например: array_map(fn($n) => $n * $n, $numbers);
Практические примеры использования array_map
Функция array_map чрезвычайно универсальна и может применяться в самых разных ситуациях. Вот несколько примеров, демонстрирующих её возможности:
Преобразование array строк
PHP: преобразование array строк с помощью функции array_map
В этом примере функция array_map используется для преобразования array строк в верхний регистр. Функция upper принимает строку и возвращает её эквивалент в верхнем регистре. Когда эта функция применяется к каждому элементу array $words, результатом является новый array с версиями исходных слов в верхнем регистре.
Объединение array с помощью array_map
PHP: объединение array с помощью array_map
В этом примере два array, $a и $b, объединяются в третий array $c. Функция sum принимает два аргумента и возвращает их сумму. Функция array_map применяет эту функцию к каждой соответствующей паре элементов из $a и $b. Результатом является новый array $c, содержащий суммы исходных пар.
Объединение array в пары с помощью null-callback
Если передать null в качестве callback, функция array_map объединит array в пары — каждый элемент результата будет array, содержащим соответствующие значения из всех входных array. Это удобно для связывания связанных данных без написания отдельной функции.
PHP: объединение array в пары с помощью array_map и null-callback
<?php
$ids = [1, 2, 3];
$names = ['Alice', 'Bob', 'Carol'];
$pairs = array_map(null, $ids, $names);
print_r($pairs);
?>Результатом будет [[1, 'Alice'], [2, 'Bob'], [3, 'Carol']] — один вложенный array на каждую строку.
Подводные камни и на что стоит обратить внимание
- Ключи сохраняются только при одном array. При передаче одного array функция
array_mapсохраняет исходные ключи. При передаче двух и более array результат переиндексируется последовательными целочисленными ключами, поэтому строковые ключи теряются. array_mapне изменяет исходный array. Она всегда возвращает новый array. Если нужно преобразовать array на месте, используйте вместо неёarray_walk.- Callback должен быть вызываемым. Передавайте строковое имя функции (
'square'), анонимную функцию, стрелочную функцию или array вида[$object, 'method']. Полный список допустимых форм см. в разделе PHP callback functions.
Когда использовать array_map, а не другие функции работы с array
- Используйте
array_map, чтобы преобразовать каждый элемент в новое значение (один входной элемент → один выходной элемент). - Используйте
array_filter, когда нужно оставить только элементы, прошедшие проверку. - Используйте
array_reduce, когда нужно свернуть array в одно значение — например, сумму или конкатенированную строку.
Заключение
Функция array_map в PHP — невероятно мощный инструмент для преобразования array данных. Будь то перевод строк в верхний регистр, объединение array или выполнение каких-либо иных вычислений, array_map — идеальный инструмент для этой задачи. Благодаря гибкому синтаксису и возможности работать одновременно с несколькими array она является обязательной к изучению функцией для любого PHP-разработчика.