РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1020 of 1392 menu

Метод reduce

Метод reduce применяется к коллекции Laravel и позволяет свернуть все элементы в одно значение, последовательно применяя коллбэк-функцию. Первым параметром передается замыкание, которое принимает аккумулятор и текущий элемент, вторым параметром - начальное значение аккумулятора. Если начальное значение не указано, используется первый элемент коллекции.

Синтаксис

<?php $res = $collection->reduce(callback, $initialValue); ?>

Пример

Давайте вычислим сумму всех чисел в коллекции:

<?php use Illuminate\Support\Collection; $collection = new Collection([1, 2, 3, 4, 5]); $res = $collection->reduce(function ($carry, $item) { return $carry + $item; }, 0); echo $res; ?>

Результат выполнения кода:

"15"

Пример

Давайте объединим все строки в одну с разделителем:

<?php use Illuminate\Support\Collection; $collection = new Collection(['a', 'b', 'c', 'd', 'e']); $res = $collection->reduce(function ($carry, $item) { if ($carry === null) { return $item; } return $carry . ', ' . $item; }); echo $res; ?>

Результат выполнения кода:

"a, b, c, d, e"

Пример

Давайте сгруппируем элементы по четности:

<?php use Illuminate\Support\Collection; $collection = new Collection([1, 2, 3, 4, 5, 6]); $res = $collection->reduce(function ($carry, $item) { if ($item % 2 === 0) { $carry['even'][] = $item; } else { $carry['odd'][] = $item; } return $carry; }, ['even' => [], 'odd' => []]); echo json_encode($res); ?>

Результат выполнения кода:

"{"even":[2,4,6],"odd":[1,3,5]}"

Пример

Давайте вычислим произведение всех чисел:

<?php use Illuminate\Support\Collection; $collection = new Collection([1, 2, 3, 4, 5]); $res = $collection->reduce(function ($carry, $item) { return $carry * $item; }, 1); echo $res; ?>

Результат выполнения кода:

"120"

Смотрите также

  • метод filter,
    который фильтрует коллекцию по заданному условию
  • метод map,
    который преобразует каждый элемент коллекции
  • метод each,
    который итерирует по элементам коллекции
  • метод pipe,
    который передает коллекцию в замыкание
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить