Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Использует ли 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]
Важные особенности
- Callback обязателен — без callback-функции
array_map()не имеет смысла - Не изменяет исходные массивы — всегда возвращает новый массив
- Сохраняет ключи только для одного массива — при обработке одного массива ключи сохраняются, при обработке нескольких — используются числовые индексы
- Типизация — с PHP 8.0 можно использовать тип
callableдля строгой проверки
Сравнение с другими функциями для работы с массивами
В отличие от некоторых других функций:
array_filter()— тоже использует callback, но для фильтрацииarray_reduce()— использует callback для свёртки массива к单一 значениюarray_walk()— использует callback, но работает с ссылками и может модифицировать исходный массив
Таким образом, использование callback-функции является не просто опциональной возможностью array_map(), а её фундаментальной характеристикой. Без callback-функции array_map() теряет весь свой смысл, так как именно callback определяет преобразование, которое будет применено к элементам массива. Это делает array_map() мощным инструментом функционального программирования в PHP, позволяющим применять произвольные операции к данным в декларативном стиле.