La función Ds\Map::reduce() es una función incorporada en PHP que se usa para reducir el mapa a un solo valor aplicando operaciones usando la función de devolución de llamada.
Sintaxis:
mixed public Ds\Map::reduce( $callback, $initial )
Parámetro: Esta función acepta dos parámetros como se mencionó anteriormente y se describe a continuación:
- $callback: este parámetro contiene la función que contiene la operación en los elementos y el acarreo de la tienda. Esta función de devolución de llamada contiene tres argumentos que se enumeran a continuación:
- carry: contiene el valor de retorno de la devolución de llamada anterior, o inicial si es la primera iteración.
- key: contiene la clave de la iteración actual.
- value: Contiene el valor de la iteración actual.
- $inicial: este parámetro contiene el valor inicial de carry, que puede ser NULL.
Valor devuelto : esta función devuelve el valor final devuelto por la función de devolución de llamada.
Los siguientes programas ilustran la función Ds\Map::reduce() en PHP:
Programa 1:
<?php // Declare a new map $map = new \Ds\Map(["a" => 1, "b" => 3, "c" => 5]); echo("Map Elements\n"); print_r($map); // Callback function with reduce function echo("\nElement after performing operation\n"); var_dump($map->reduce(function($carry, $key, $element) { return $carry + $element + 2; })); ?>
Producción:
Map Elements Ds\Map Object ( [0] => Ds\Pair Object ( [key] => a [value] => 1 ) [1] => Ds\Pair Object ( [key] => b [value] => 3 ) [2] => Ds\Pair Object ( [key] => c [value] => 5 ) ) Element after performing operation int(15)
Programa 2:
<?php // Declare new Map elements $map = new \Ds\Map(["a" => 10, "b" => 20, "c" => 30, "d" => 40, "e" => 50]); echo("Original map elements\n"); print_r($map); $func_gfg = function($carry, $key, $element) { return $carry * $element; }; echo("\nMap after reducing to single element\n"); // Use reduce() function var_dump($map->reduce($func_gfg, 10)); ?>
Producción:
Original map elements Ds\Map Object ( [0] => Ds\Pair Object ( [key] => a [value] => 10 ) [1] => Ds\Pair Object ( [key] => b [value] => 20 ) [2] => Ds\Pair Object ( [key] => c [value] => 30 ) [3] => Ds\Pair Object ( [key] => d [value] => 40 ) [4] => Ds\Pair Object ( [key] => e [value] => 50 ) ) Map after reducing to single element int(120000000)
Referencia: https://www.php.net/manual/en/ds-map.reduce.php