数组函数

PHP array_reduce() 函数

主题:PHP 数组参考上一页|下一页

说明

array_reduce() 函数使用回调函数迭代地将数组缩减为单个值。

它基本上对数组的每个元素应用一个回调函数来构建单个值。

下表总结了该函数的技术细节。

返回值: Returns the resulting value.
变更日志: 自 PHP 5.3.0 起,initial 参数接受多种类型或混合类型(但不一定全部)。 以前,只允许使用整数。
版本: PHP 4.0.5+

语法

array_reduce() 函数的基本语法如下:

array_reduce(array, callback, initial);

下面的例子展示了 array_reduce() 函数的作用。

<?php
// 定义回调函数
function sum($carry, $item){
    $carry += $item;
    return $carry;
}

// 样本数组
$numbers = array(1, 2, 3, 4, 5);
var_dump(array_reduce($numbers, "sum")); // int(15)
?>

注意:回调函数有两个参数carryitem:第一个保存上一次迭代返回的值,第二个是 当前数组元素。


参数

array_reduce() 函数接受以下参数。

参数 说明
array 必填。 指定要处理的数组。
callback 必填。 指定回调函数的名称。
initial 可选。 指定在进程开始时使用的值。

更多示例

这里有更多示例展示了 array_reduce() 函数的实际工作原理:

以下示例将计算数组值的乘法。 由于我们还指定了一个初始值,所以结果值将是 1200(因为:10*1*2*3*4*5)。

<?php
// 定义回调函数
function multiply($carry, $item){
    $carry *= $item;
    return $carry;
}

// 样本数组
$numbers = array(1, 2, 3, 4, 5);
var_dump(array_reduce($numbers, "multiply", 10)); // int(1200)
?>

如果数组为空,则 initial 值将用作最终结果,如此处所示。

<?php
// 定义回调函数
function sum($carry, $item){
    $carry += $item;
    return $carry;
}

// 样本数组
$empty = array();
var_dump(array_reduce($empty, "sum", "No data to reduce")); // string(17)
?>

如果数组为空且未传递initial,则array_reduce() 函数返回NULL

Advertisements