Ds\Vector::reduce

(PECL ds >= 1.0.0)

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

Описание

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

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

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

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

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

value

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

initial

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

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

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

Примеры

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

<?php
$vector 
= new \Ds\Vector([123]);

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

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

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

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

int(30)

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

<?php
$vector 
= new \Ds\Vector([123]);

var_dump($vector->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)