Ds\Map::reduce

(PECL ds >= 1.0.0)

Ds\Map::reduceУменьшает коллекцию до одного значения, используя callback-функцию

Описание

public Ds\Map::reduce ( callable $callback , mixed $initial = ? ) : mixed

Уменьшает коллекцию до одного значения, используя callback-функцию.

Список параметров

callback
callback ( mixed $carry , mixed $key , mixed $value ) : mixed
carry

Значение, возвращенное предыдущим запуском функции или initial, если функция запущена в первый раз.

key

Ключ текущей итерации.

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($callback5));

// Итерации:
//
// $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;
}));

// Итерации:
//
// $carry = $initial = null
//
// $carry = $carry + 1 + 5 =  6
// $carry = $carry + 2 + 5 = 13
// $carry = $carry + 3 + 5 = 21
?>

Результатом выполнения данного примера будет что-то подобное:

int(21)