Перейти к содержимому

Функция array_map() в PHP: Полное руководство

Функция array_map в PHP — это важный инструмент для преобразования массивов данных. Она позволяет разработчикам применять функцию обратного вызова к каждому элементу массива и возвращать новый массив с результатами. Это универсальный и мощный метод обработки данных в PHP, который можно использовать в самых разных задачах.

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

Базовый синтаксис функции array_map выглядит следующим образом:

Синтаксис функции array_map в PHP

php
array_map(callback, array1, array2, ...);

Здесь аргумент callback — это функция, которая будет применена к каждому элементу массивов. Остальные аргументы — это массивы, подлежащие обработке. Например, рассмотрим следующий код:

Пример использования функции array_map в PHP

php
<?php

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

function square($n) {
    return $n * $n;
}

$squared = array_map('square', $numbers);

print_r($squared);

?>

Этот код определяет простую функцию square, которая принимает число и возвращает его квадрат. Затем функция array_map применяется к каждому элементу массива $numbers. В результате получается новый массив $squared, содержащий квадраты исходных чисел.

Примечание о длинах массивов: При передаче нескольких массивов в array_map обработка продолжается до исчерпания самого длинного массива. Если массивы имеют разную длину, отсутствующие элементы в более коротких массивах автоматически считаются null.

Примечание о современном синтаксисе: В PHP 7.4+ можно использовать стрелочные функции для лаконичных обратных вызовов. Например: array_map(fn($n) => $n * $n, $numbers);

Примеры использования array_map на практике

Функция array_map чрезвычайно универсальна и может использоваться во многих различных контекстах. Вот несколько примеров, демонстрирующих её возможности:

Преобразование массивов строк

Преобразование массивов строк с помощью функции array_map в PHP

php
<?php

$words = ['foo', 'bar', 'baz'];

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

$upper_words = array_map('upper', $words);

print_r($upper_words);

?>

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

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

Объединение массивов с помощью array_map в PHP

php
<?php

$a = [1, 2, 3];
$b = [10, 20, 30];

function sum($a, $b) {
    return $a + $b;
}

$c = array_map('sum', $a, $b);

print_r($c);

?>

В этом примере два массива, $a и $b, объединяются в третий массив $c. Функция sum принимает два аргумента и возвращает их сумму. Функция array_map применяется к каждой соответствующей паре элементов в $a и $b. В результате получается новый массив $c, содержащий суммы исходных пар.

Заключение

Функция array_map в PHP — это невероятно мощный инструмент для преобразования массивов данных. Независимо от того, преобразуете ли вы строки в верхний регистр, объединяете массивы или выполняете другие вычисления, array_map идеально подходит для этой задачи. Благодаря гибкому синтаксису и возможности работать с несколькими массивами одновременно, это обязательная к изучению функция для любого разработчика на PHP.

Практика

Что верно относительно функции array_map() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.