# Ds\Deque::reduce

(PECL ds >= 1.0.0)

Ds\Deque::reduceReduces the deque to a single value using a callback function

### Descrierea

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

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

### Parametri

`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`.

### Valorile întoarse

The return value of the final callback.

### Exemple

Example #1 Ds\Deque::reduce() with initial value example

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

Exemplul de mai sus va afișa ceva similar cu:

```int(30)
```

Example #2 Ds\Deque::reduce() without an initial value example

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

Exemplul de mai sus va afișa ceva similar cu:

```int(21)
```