如果我有:
$my_array = array(
"user1" => "100",
"user2" => "200",
"user3" => "300"
);
如何使用array_sum计算除user3之外的值的总和?
我试过这个函数(array_filter),但它不起作用:
function filterArray($value) {
return ($value <> "user3");
}
我正在使用 PHP 版本 5.2.17
如果我有:
$my_array = array(
"user1" => "100",
"user2" => "200",
"user3" => "300"
);
如何使用array_sum计算除user3之外的值的总和?
我试过这个函数(array_filter),但它不起作用:
function filterArray($value) {
return ($value <> "user3");
}
我正在使用 PHP 版本 5.2.17
array_sum(array_filter($my_array,
function ($user) { return $user != 'user3'; },
ARRAY_FILTER_USE_KEY))
ARRAY_FILTER_USE_KEY
在 PHP 5.6 中可用。
或者:
array_sum(array_diff_key($my_array, array_flip(array('user3'))))
另一种方法:
foreach ($my_array as $key => $value) {
if ($key !== "user3") {
$sum += $value;
}
}
echo $sum;
与其使用多个函数多次迭代数组或进行迭代比较,不如无条件地对所有内容求和并减去不需要的值。
如果数组中可能不存在不需要的元素,则通过空合并运算符回退到 0。
代码:(演示)
echo array_sum($my_array) - ($my_array['user3'] ?? 0);
// 300
另一方面,如果改变输入数组是安全的(因为数据在有限的范围内,或者如果您不再需要原始形式的数组),那么unset()
这是一个无条件的解决方案。
unset($my_array['user3']);
echo array_sum($my_array);