PHP - Ds Set::reduce() 函数



PHP 的 Ds\Set::reduce() 函数用于通过将回调函数应用于当前集合的每个元素来将集合简化为单个值。

回调函数的返回值成为下一个元素的新累加值,在所有元素处理完毕后,reduce() 函数返回最终的累加值。

语法

以下是 PHP Ds\Set::reduce() 函数的语法:

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

参数

以下是此函数的参数:

  • callback − 此参数包含一个对集合元素进行操作的函数。
  • initial − 累加值的初始值,可以为 null

以下是 callback 函数的语法:

callback(mixed $carry, mixed $value): mixed

这里,carry 是前一个回调函数的返回值,value 是当前迭代的值。

返回值

此函数返回最终回调函数的值。

示例 1

以下是 PHP Ds\Set::reduce() 函数的基本示例:

<?php  
   $set = new \Ds\Set([1, 2, 3, 4]);  
   echo "The original set elements: \n";  
   print_r($set);
   #using callback function   
   $func = function($carry, $element) {  
      return $carry + $element;  # 1+2+3+4 = 10 + 5 = 15
   };
   $ele = 5;
   echo "\nThe element value is: ".$ele;
   echo "\nThe set after reducing to single element: ";  
   var_dump($set->reduce($func, $ele));
?>

输出

以上程序产生以下输出:

The original set elements:
Ds\Set Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

The element value is: 5
The set after reducing to single element: int(15)

示例 2

以下是 PHP Ds\Set::reduce() 函数的另一个示例。我们使用此函数通过回调函数将此集合 ([10, 20, 30, 40]) 简化为单个值:

<?php  
   $set = new \Ds\Set([10, 20, 30, 40]);  
   echo "The original set elements: \n";  
   print_r($set);
   #using callback function   
   $func = function($carry, $element) {  
      return $carry * $element; #10*20 = 200*30 = 6000 * 40 = 240000*2 = 480000
   };
   $ele = 2;
   echo "\nThe element value is: ".$ele;
   echo "\nThe set after reducing to single element: ";  
   var_dump($set->reduce($func, $ele));
?> 

输出

执行以上程序后,将显示以下输出:

The original set elements:
Ds\Set Object
(
    [0] => 10
    [1] => 20
    [2] => 30
    [3] => 40
)

The element value is: 2
The set after reducing to single element: int(480000)
php_function_reference.htm
广告