求和数组值,不包括具有特定键的元素的值

Sum array values excluding value of element with specific key

如果我有:

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

如何使用 array_sum 来计算除 the 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。

代码:(Demo)

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

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

unset($my_array['user3']);
echo array_sum($my_array);