# 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)
```