PHP array_reduce() 函数
说明
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)
?>
注意:回调函数有两个参数carry和item:第一个保存上一次迭代返回的值,第二个是 当前数组元素。
参数
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