PHP - Ds Deque::reduce() 函式



PHP 的 Ds\Deque::reduce() 函式將雙端佇列簡化為單個值。為了執行此操作,該函式使用回撥函式。回撥函式包含兩個引數,分別是 carry 和 value。

carry 是前一個回撥函式的返回值,而 value 是當前迭代的值。基於這兩個引數,應用回撥函式。

此回撥函式的最終結果被視為 reduce() 函式的引數之一。另一個引數稱為“initial”,它表示承載值的初始值。

語法

以下是 PHP Ds\Deque::reduce() 函式的語法:

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

引數

以下是此函式的引數:

  • callback - 一個回撥函式,將單個雙端佇列值簡化為一個值。
  • initial - 它表示 carry 值的初始值。此值可能是 null。

以下是 callback 函式的語法

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

返回值

此函式返回最終的回撥函式返回值。

示例 1

以下示例演示了 PHP Ds\Deque::reduce() 函式的使用:

<?php
   $deque = new \Ds\Deque([5, 10, 15, 20, 25]);
   echo "The deque elements are: \n";
   print_r($deque);
   $func = function($carry, $element) {
      return $carry + $element*2;
   };
   echo "The reduced single value: ";
   print_r($deque->reduce($func));
?>

輸出

執行上述程式後,將生成以下輸出:

The deque elements are:
Ds\Deque Object
(
    [0] => 5
    [1] => 10
    [2] => 15
    [3] => 20
    [4] => 25
)
The reduced single value: 150

示例 2

以下是 PHP Ds\Deque::reduce() 函式的另一個示例。我們使用此函式將此雙端佇列 ([10, 20, 30]) 使用提供的回撥函式簡化為單個值:

<?php
   $deque = new \Ds\Deque([10, 20, 30]);
   echo "The deque elements are: \n";
   print_r($deque);
   $func = function($carry, $element) {
      return $carry * $element*2;
   };
   echo "The reduced single value: ";
   print_r($deque->reduce($func, 10));
?>

輸出

執行上述程式後,將顯示以下輸出:

The deque elements are:
Ds\Deque Object
(
    [0] => 10
    [1] => 20
    [2] => 30
)
The reduced single value: 480000

示例 3

如果當前雙端佇列為空 ([]),並且提供了“initial”值,則此函式將返回初始值作為結果。

在下面的示例中,我們使用 PHP Ds\Deque::reduce() 函式將當前雙端佇列使用如下回調函式簡化為單個值:

<?php
   $deque = new \Ds\Deque([]);
   echo "The deque elements are: \n";
   print_r($deque);
   $func = function($carry, $element) {
      return $element - $carry;
   };
   echo "The reduced single is: ";
   print_r($deque->reduce($func,15));
?>

輸出

上述程式產生以下輸出:

The deque elements are:
Ds\Deque Object
(
)
The reduced single is: 15
廣告