# Ds\Sequence::reduce

(PECL ds >= 1.0.0)

Ds\Sequence::reduceReduces the sequence to a single value using a callback function

### 説明

abstract public Ds\Sequence::reduce(callable `\$callback`, mixed `\$initial` = ?): mixed

Reduces the sequence to a single value using a callback function.

### パラメータ

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

The return value of the previous callback, or `initial` if it's the first iteration.

`value`

The value of the current iteration.

`initial`

The initial value of the carry value. Can be `null`.

### 戻り値

The return value of the final callback.

### 例

``` <?php\$sequence = new \Ds\Vector([1, 2, 3]);\$callback = function(\$carry, \$value) {    return \$carry * \$value;};var_dump(\$sequence->reduce(\$callback, 5));// Iterations://// \$carry = \$initial = 5//// \$carry = \$carry * 1 =  5// \$carry = \$carry * 2 = 10// \$carry = \$carry * 3 = 30?> ```

```int(30)
```

``` <?php\$sequence = new \Ds\Vector([1, 2, 3]);var_dump(\$sequence->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)
```