函式名:Ds\Map::reduce()
適用版本:PHP 7.1 及以上
用法:
Ds\Map::reduce() 函式用於將所有的鍵/值對依次傳遞給回撥函式,並最終返回一個合併後的結果。
回撥函式接受兩個引數:第一個引數為累積結果,第二個引數為當前的鍵/值對。回撥函式可使用累積結果和當前鍵/值對來計算新的累積結果,並將其返回。
語法:
public Ds\Map::reduce ( callable $callback [, mixed $initial = NULL ] ) : mixed
引數:
$callback
:一個回撥函式,用於處理累積結果和當前鍵/值對。回撥函式應該接受兩個引數,並返回一個新的累積結果。$initial
(可選):初始的累積結果,預設為NULL
。
返回值: 該方法的返回值型別與回撥函式的返回值型別相同。
示例:
$map = new Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$result = $map->reduce(function ($carry, $item) {
return $carry + $item;
}, 0);
echo $result; // 輸出:6
上述示例中,我們建立了一個包含三個鍵/值對的 Map 物件。然後,使用 reduce()
方法將所有的值相加,初始的累積結果為 0
。最後,輸出結果為 6
。
注意:
- 使用
reduce()
方法時,回撥函式必須能夠處理初始累積結果與鍵/值對的型別,並根據需要返回相應型別的結果。 - 若不指定初始的累積結果,則第一次呼叫回撥函式時,累積結果為第一個鍵/值對,第二次呼叫時,累積結果為第一次呼叫的返回值和第二個鍵/值對。
- 若 Map 物件為空,並且未指定初始的累積結果,則
reduce()
方法將丟擲一個異常。