0

如果我有:

$my_array = array(
    "user1" => "100",
    "user2" => "200",
    "user3" => "300"
);

如何使用array_sum计算除user3之外的值的总和?

我试过这个函数(array_filter),但它不起作用:

function filterArray($value) {
    return ($value <> "user3");
}

我正在使用 PHP 版本 5.2.17

4

3 回答 3

3
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'))))
于 2018-01-25T11:39:10.080 回答
1

另一种方法:

foreach ($my_array as $key => $value) {
    if ($key !== "user3") {
        $sum += $value;
    }
}
echo $sum;
于 2018-01-25T11:40:48.840 回答
0

与其使用多个函数多次迭代数组或进行迭代比较,不如无条件地对所有内容求和并减去不需要的值。

如果数组中可能不存在不需要的元素,则通过空合并运算符回退到 0。

代码:(演示

echo array_sum($my_array) - ($my_array['user3'] ?? 0);
// 300

另一方面,如果改变输入数组是安全的(因为数据在有限的范围内,或者如果您不再需要原始形式的数组),那么unset()这是一个无条件的解决方案。

unset($my_array['user3']);
echo array_sum($my_array);
于 2021-08-20T12:34:01.233 回答