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
廣告