📜  PHP | Ds\Map reduce()函数(1)

📅  最后修改于: 2023-12-03 15:33:32.413000             🧑  作者: Mango

PHP | Ds\Map reduce()函数

在 PHP 中,Ds\Map 是一种实现了数组接口的数组类,reduce() 函数用于将一个数组进行归纳。

语法
public function reduce(callable $callback, $initial = null): mixed

参数:

  • $callback:回调函数,每一次归纳都会调用该函数,接收两个参数:accumulator(累加器)和 value(当前值)
  • $initial:初始累加器的值

返回值:归纳后的值

示例

假设我们有一个包含五个元素的 map,我们想把它们都加在一起,可以使用 reduce() 函数实现:

$map = new \Ds\Map([
    'a' => 1,
    'b' => 2,
    'c' => 3,
    'd' => 4,
    'e' => 5,
]);

$sum = $map->reduce(function($accumulator, $value) {
    return $accumulator + $value;
}, 0);

echo $sum; // 输出 15

这里的初始累加器值为 0,每一次迭代时,回调函数将 accumulator 与当前值 value 相加,并返回相加后的值,最终得到了所有元素的和。

注意事项
  • reduce() 函数将不会改变原数组;
  • 在回调函数中对 accumulator 的修改会反映在下一次迭代时,但这并不意味着 accumulate 会被修改;
  • 实际上,reduce() 函数会在第一次迭代时将第一个元素作为初始值传递给回调函数,而不是使用 $initial 所指定的值。
参考链接