Array_reduce()
Glossary overview

Array_reduce()

Функция array_reduce() в PHP используется для итерации по массиву и применения к его элементам функции, которая сводит все элементы массива к единому значению.

Синтаксис:

array_reduce(array $array, callable $callback, mixed $initial = null): mixed
  • $array — массив, к элементам которого будет применяться функция.
  • $callback — анонимная функция (или метод), которая применяется к каждому элементу массива. Эта функция должна принимать два аргумента: накопленное значение (аккумулятор) и текущий элемент массива.
  • $initialначальное значение для аккумулятора. Если не указано, то используется первое значение массива.

Пример 1: Суммирование всех элементов массива

$array = [1, 2, 3, 4, 5];
$result = array_reduce($array, function($carry, $item) {
    return $carry + $item;
});

echo $result;  // Вывод: 15

Здесь:

  • $carry — это накопленное значение (накапливает сумму).
  • $item — текущий элемент массива.
  • Функция складывает все элементы массива, начиная с начального значения (по умолчанию 0).

Пример 2: Нахождение произведения всех элементов массива

$array = [1, 2, 3, 4];
$result = array_reduce($array, function($carry, $item) {
    return $carry * $item;
}, 1);  // Начальное значение - 1

echo $result;  // Вывод: 24

Здесь мы используем начальное значение 1, чтобы умножать все элементы массива. Результат — произведение всех элементов массива.

Пример 3: Слияние строк в одну

$array = ["Hello", "world", "from", "PHP"];
$result = array_reduce($array, function($carry, $item) {
    return $carry . ' ' . $item;
});

echo $result;  // Вывод: "Hello world from PHP"

В этом примере мы сливаем все строки массива в одну строку с пробелами между словами.

Пример 4: Нахождение максимального значения в массиве

$array = [4, 2, 8, 1, 5];
$result = array_reduce($array, function($carry, $item) {
    return ($carry > $item) ? $carry : $item;
});

echo $result;  // Вывод: 8

Здесь мы используем функцию для нахождения максимального значения в массиве.

Пример 5: Преобразование массива в ассоциативный массив

$array = [1, 2, 3, 4];
$result = array_reduce($array, function($carry, $item) {
    $carry[$item] = $item * $item;
    return $carry;
}, []);

print_r($result);

// Вывод
Array
(
    [1] => 1
    [2] => 4
    [3] => 9
    [4] => 16
)

В этом примере мы создаём ассоциативный массив, где ключи — это элементы массива, а значения — их квадраты.

Как работает array_reduce():

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

Это очень удобная функция для выполнения различных операций на массивах, сводящих данные к одному значению, будь то сумма, произведение, строка или что-то другое.