(PECL ds >= 1.0.0)
Ds\Map::reduce — Схлопывает коллекцию до одного значения используя callback-функцию
Схлопывает коллекцию до одного значения используя callback-функцию.
callbackcarry
Значение вохвращенное предыдущим запуском функции, или
initial, если функция запущена первый раз.
keyThe key of the current iteration.
valueЗначение текущей итерации.
initial
Начальное значение параметра carry.Можно указать NULL.
Значение возвращенное финальным запуском callback-функции.
Пример #1 Пример использования Ds\Map::reduce() с начальным значением
<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$callback = function($carry, $key, $value) {
return $carry * $value;
};
var_dump($map->reduce($callback, 5));
// Iterations:
//
// $carry = $initial = 5
//
// $carry = $carry * 1 = 5
// $carry = $carry * 2 = 10
// $carry = $carry * 3 = 30
?>
Результатом выполнения данного примера будет что-то подобное:
int(30)
Пример #2 Пример использования Ds\Map::reduce() без начального значения
<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
var_dump($map->reduce(function($carry, $key, $value) {
return $carry + $value + 5;
}));
// Iterations:
//
// $carry = $initial = null
//
// $carry = $carry + 1 + 5 = 6
// $carry = $carry + 2 + 5 = 13
// $carry = $carry + 3 + 5 = 21
?>
Результатом выполнения данного примера будет что-то подобное:
int(21)