array_sum

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

array_sum计算数组中值的总和

描述

array_sum(array $array): int|float

array_sum() 返回数组中值的总和。

参数

array

输入数组。

返回值

返回值的总和,以整数或浮点数形式表示;如果 array 为空,则返回 0

变更日志

版本 描述
8.3.0 现在当 array 值无法转换为 intfloat 时会发出 E_WARNING。以前 arrayobject 会被忽略,而其他所有值则被转换为 int。此外,定义了数值强制转换的对象(例如 GMP)现在会被强制转换,而不是被忽略。

范例

范例 #1 array_sum() 示例

<?php
$a
= array(2, 4, 6, 8);
echo
"sum(a) = " . array_sum($a) . "\n";

$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
echo
"sum(b) = " . array_sum($b) . "\n";
?>

上面示例将输出

sum(a) = 20
sum(b) = 6.9

添加备注

用户贡献的备注 6 个备注

rodrigo at adboosters dot com
2 年前
如果你想计算多维数组的总和

<?php
function array_multisum(array $arr): float {
$sum = array_sum($arr);
foreach(
$arr as $child) {
$sum += is_array($child) ? array_multisum($child) : 0;
}
return
$sum;
}
?>

示例

<?php
$data
=
[
'a' => 5,
'b' =>
[
'c' => 7,
'd' => 3
],
'e' => 4,
'f' =>
[
'g' => 6,
'h' =>
[
'i' => 1,
'j' => 2
]
]
];

echo
array_multisum($data);

//输出: 28
?>
harl at gmail dot com
1 年前
array_sum() 不会 "忽略无法转换为数字的字符串",它会将它们转换为零。array_product() 做同样的事情,而 "忽略" 和 "转换为零" 之间的区别在 array_product() 中更为明显。
Michele Marsching
1 年前
值得注意的是,该函数会将字符串转换为浮点数,并忽略无法转换为数字的字符串。

<?php
$a
= array("String", 2, 4, 6, 8);
echo
"sum(a) = " . array_sum($a) . "\n";

$b = array("12.3456", 2, 4, 6, 8);
echo
"sum(b) = " . array_sum($b) . "\n";
?>

sum(a) = 20
sum(b) = 32.3456
samiulmomin191139 at gmail dot com
2 年前
<?php
// 你也可以像这样对多维数组求和;

function arraymultisum(array $arr){
$sum=null;

foreach(
$arr as $child){
$sum+=is_array($child) ? arraymultisum($child):$child;
}
return
$sum;
}

echo
arraymultisum(array(1,4,5,[1,5,8,[4,5,7]]));

//答案将是
//40

?>
sarosekvlad12 at gmail dot com
1 年前
如果你的数组中有以字符串形式表示的整数,它会像数组中只有整数一样将它们加起来!
function sum_mix($a)
{
return array_sum($a);
}
var_dump(sum_mix([9, 3, '7', '3']));
响应将是 int(22)
yakushabb at gmail dot com
2 年前
array_sum 会将字符串转换为整数,而 array_sum(2,'2') 返回 4。

我之前不知道。
To Top