← Назад к вопросам

Использует ли функция array_map() callback?

1.6 Junior🔥 171 комментариев
#PHP Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Использует ли array_map() callback-функции?

Да, функция array_map() в PHP обязательно использует callback-функцию (функцию обратного вызова) в качестве первого аргумента. Это её основное предназначение — применять указанную callback-функцию ко всем элементам одного или нескольких массивов.

Как работает array_map()?

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

Базовый синтаксис:

array_map(callable $callback, array $array, array ...$arrays): array

Примеры использования callback с array_map()

1. Простой callback с одним массивом

$numbers = [1, 2, 3, 4, 5];

// Использование анонимной функции как callback
$squared = array_map(function($n) {
    return $n * $n;
}, $numbers);

print_r($squared); // [1, 4, 9, 16, 25]

2. Использование именованной функции как callback

function toUpper($str) {
    return strtoupper($str);
}

$names = ['alice', 'bob', 'charlie'];
$uppercased = array_map('toUpper', $names);

print_r($uppercased); // ['ALICE', 'BOB', 'CHARLIE']

3. Callback с несколькими массивами

$array1 = [1, 2, 3];
$array2 = [4, 5, 6];

$sums = array_map(function($a, $b) {
    return $a + $b;
}, $array1, $array2);

print_r($sums); // [5, 7, 9]

4. Использование встроенных функций PHP как callback

$strings = ['hello', 'world', 'php'];
$lengths = array_map('strlen', $strings);

print_r($lengths); // [5, 5, 3]

Типы callback-функций, которые можно использовать

array_map() поддерживает различные форматы callback-функций:

  • Анонимные функции (лямбда-функции) — как в примерах выше
  • Именованные функции — передача имени функции как строки
  • Встроенные функции PHP'strtoupper', 'intval', 'trim' и т.д.
  • Статические методы классов['ClassName', 'staticMethod'] или 'ClassName::staticMethod'
  • Методы объектов[$object, 'methodName']
  • Стрелочные функции (с PHP 7.4) — более краткий синтаксис

Пример со стрелочной функцией (PHP 7.4+)

$prices = [100, 200, 300];
$withTax = array_map(fn($price) => $price * 1.20, $prices);

print_r($withTax); // [120, 240, 360]

Важные особенности

  1. Callback обязателен — без callback-функции array_map() не имеет смысла
  2. Не изменяет исходные массивы — всегда возвращает новый массив
  3. Сохраняет ключи только для одного массива — при обработке одного массива ключи сохраняются, при обработке нескольких — используются числовые индексы
  4. Типизация — с PHP 8.0 можно использовать тип callable для строгой проверки

Сравнение с другими функциями для работы с массивами

В отличие от некоторых других функций:

  • array_filter() — тоже использует callback, но для фильтрации
  • array_reduce() — использует callback для свёртки массива к单一 значению
  • array_walk() — использует callback, но работает с ссылками и может модифицировать исходный массив

Таким образом, использование callback-функции является не просто опциональной возможностью array_map(), а её фундаментальной характеристикой. Без callback-функции array_map() теряет весь свой смысл, так как именно callback определяет преобразование, которое будет применено к элементам массива. Это делает array_map() мощным инструментом функционального программирования в PHP, позволяющим применять произвольные операции к данным в декларативном стиле.