W3docs

Функция 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

php— editable, runs on the server

В этом коде определена простая функция 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

php— editable, runs on the server

В этом примере функция array_map используется для преобразования array строк в верхний регистр. Функция upper принимает строку и возвращает её эквивалент в верхнем регистре. Когда эта функция применяется к каждому элементу array $words, результатом является новый array с версиями исходных слов в верхнем регистре.

Объединение array с помощью array_map

PHP: объединение array с помощью array_map

php— editable, runs on the server

В этом примере два 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-разработчика.

Практика

Практика
Что верно в отношении функции array_map() в PHP?
Что верно в отношении функции array_map() в PHP?
Was this page helpful?