Двухсторонняя очередь
PHP Manual

Ds\Deque::reduce

(PECL ds >= 1.0.0)

Ds\Deque::reduceСхлопывает коллекцию до одного значения используя callback-функцию

Описание

public mixed Ds\Deque::reduce ( callable $callback [, mixed $initial ] )

Схлопывает коллекцию до одного значения используя callback-функцию.

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

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

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

value

Значение текущей итерации.

initial

Начальное значение параметра carry.Можно указать NULL.

Возвращаемые значения

Значение возвращенное финальным запуском callback-функции.

Примеры

Пример #1 Пример использования Ds\Deque::reduce() с начальным значением

<?php
$deque 
= new \Ds\Deque([123]);

$callback = function($carry$value) {
    return 
$carry $value;
};

var_dump($deque->reduce($callback5));

// Iterations:
//
// $carry = $initial = 5
//
// $carry = $carry * 1 =  5
// $carry = $carry * 2 = 10
// $carry = $carry * 3 = 30
?>

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

int(30)

Пример #2 Пример использования Ds\Deque::reduce() без начального значения

<?php
$deque 
= new \Ds\Deque([123]);

var_dump($deque->reduce(function($carry$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)

Двухсторонняя очередь
PHP Manual