(PECL ds >= 1.0.0)
Ds\Map::reduce — Reduce el mapa a un solo valor utilizando una retrollamada
Reduce el mapa a un solo valor utilizando una retrollamada.
callback
carry
El valor de retorno de la retrollamada anterior, o initial
si
es la primera iteración.
key
La clave de la iteración actual.
value
El valor de la iteración actual.
initial
El valor inicial del valor de retorno. Puede ser null
.
El valor de retorno de la retrollamada final.
Ejemplo #1 Ejemplo de Ds\Map::reduce() con valor inicial
<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$callback = function($carry, $key, $value) {
return $carry * $value;
};
var_dump($map->reduce($callback, 5));
// Iteraciones:
//
// $carry = $initial = 5
//
// $carry = $carry * 1 = 5
// $carry = $carry * 2 = 10
// $carry = $carry * 3 = 30
?>
El resultado del ejemplo sería algo similar a:
int(30)
Ejemplo #2 Ejemplo de Ds\Map::reduce() sin valor inicial
<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
var_dump($map->reduce(function($carry, $key, $value) {
return $carry + $value + 5;
}));
// Iteraciones:
//
// $carry = $initial = null
//
// $carry = $carry + 1 + 5 = 6
// $carry = $carry + 2 + 5 = 13
// $carry = $carry + 3 + 5 = 21
?>
El resultado del ejemplo sería algo similar a:
int(21)