PHP - Ds Sequence::reduce() 函数



PHP 的 Ds\Sequence::reduce() 函数用于使用回调函数将序列简化为单个值。此单个值是基于提供的回调函数执行的操作组合序列的所有元素。

回调函数应返回更新的累加器值,该值将在下一次迭代中使用。

语法

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

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

参数

以下是此函数的参数:

  • callback − 回调函数应返回更新的累加器值。
  • initial − 传递值的可选初始值,可以为 null

以下是 callback 函数的语法:

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

返回值

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

示例 1

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

<?php
   $seq = new \Ds\Vector([1, 2, 3]);
   echo "The original sequence: \n";
   print_r($seq);
   echo "The sequence reduce to single value: ";
   $callback = function($carry, $value){
      return $carry * $value;
   };
   var_dump($seq->reduce($callback, 5));
?>

输出

以上程序产生以下输出:

The original sequence:
Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
The sequence reduce to single value: int(30)

示例 2

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

<?php
   $seq = new \Ds\Vector([10, 20, 30, 40, 50]);
   echo "The original sequence: \n";
   print_r($seq);
   echo "The sequence reduce to single value: ";
   var_dump($seq->reduce(function($carry, $value) {
      return $carry + $value + 5;
   }));
?>

输出

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

The original sequence:
Ds\Vector Object
(
    [0] => 10
    [1] => 20
    [2] => 30
    [3] => 40
    [4] => 50
)
The sequence reduce to single value: int(175)

示例 3

如果指定了 initial 参数,则 reduce() 函数用作缩减的起点:

<?php
   $seq = new \Ds\Vector([2, 4, 6, 8, 10]);
   echo "The original sequence: \n";
   print_r($seq);
   echo "The sequence reduce to single value: ";
   var_dump($seq->reduce(function($carry, $value) {
      return $carry + $value;
   }, 10));
?>

输出

执行上述程序后,它将生成以下输出:

The original sequence:
Ds\Vector Object
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)
The sequence reduce to single value: int(40)
php_function_reference.htm
广告