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

Пример: сумма чисел в массиве

Как это работает:
  • Определяем массив $numbers с числами 10, 20 и 30.
  • Заводим переменную $total и присваиваем ей начальное значение 0.
  • В цикле foreach поочерёдно прибавляем каждое число из массива к $total.
  • Выводим итоговое значение.

Альтернатива с использованием array_reduce

Тот же результат можно получить без цикла foreach, используя функцию array_reduce():
Как это работает:
  • array_reduce() принимает массив и функцию обратного вызова.
  • Она последовательно применяет callback к элементам массива, сводя их к одному значению.
С PHP 7.3 можно использовать стрелочные функции:

Синтаксис

  • $array - входной массив, который будет сведен к одному значению.
  • $callback - функция обратного вызова, определяющая логику свёртки.
  • $initial - начальное значение для свёртки. Если массив пуст, возвращается это значение. Если не указано и массив пуст, возвращается null.
Callback-функция (reducer) принимает два аргумента:
  • $carry - результат предыдущей итерации (или начальное значение).
  • $item - текущий элемент массива.

Пример: подсчёт суммы товаров в корзине

Если массив $carts пуст, результат будет null. Чтобы возвращать 0 вместо null, передайте начальное значение:

Итог

Используйте функцию array_reduce() для преобразования массива в одно значение с помощью callback-функции. Это удобно для вычислений по всем элементам массива с накоплением результата.