The Ds\Map::reduce() function is an inbuilt function in PHP which is used to reduce the map to a single value by applying operations using the callback function.
Syntax:
mixed public Ds\Map::reduce( $callback, $initial )
Parameter: This function accepts two parameters as mentioned above and described below:
-
$callback: This parameter holds the function which contains the operation on the elements and store carry. This callback function contains three arguments which are listed below:
- carry: It holds the return value of the previous callback, or initial if it’s the first iteration.
- key: It holds the key of the current iteration.
- value: It holds the value of the current iteration.
- $initial: This parameter holds the initial value of carry, which can be NULL.
Return value: This function returns the final value returned by the callback function.
Below programs illustrate the Ds\Map::reduce() function in PHP:
Program 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;
})); ?> |
Output:
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)
Program 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));
?> |
Output:
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)
Reference: https://www.php.net/manual/en/ds-map.reduce.php