如何从数组中获取最大值后总结所有剩余金额?

时间:2017-12-07 01:36:25

标签: php arrays

我对这个问题犹豫不决,不管是否应该问。我认为这是一个更合乎逻辑的问题。但是,我无法弄明白。

我有一个可能包含

的数组
$programFees = [100,200,100,500,800,800]

我可以使用max($programFees)从此数组中获取最大值。如果我有2个最大值,如800,800,我只想拿一个。我意识到php max可以解决这个问题。

但是,我想从该数组中总结所有剩余的数量。

例如

$maxProgramFees = max($programFees); 
//I got 800 and remaining amount is [100,200,100,500,800]

我的总金额应为1700。我应该用哪种方法来获得这个金额?

2 个答案:

答案 0 :(得分:5)

对数组进行排序,获取最大值,然后移动数组以获取余数值。添加这些值

<?php 
$programFees = [100, 200, 100, 500, 800, 800];
rsort($programFees); //sort high -> low

$highest = $programFees[0]; // 800
array_shift($programFees); // remove the highest value

$sum = array_sum($programFees); // 1700

rsort() documentation

array_shift() documentation

array_sum() documentation

答案 1 :(得分:1)

@helllomatt已经提供了一个非常好的答案,但是,如果由于某种原因你不能修改数组顺序,你可能想尝试这样的事情。

$programFees = [100,200,100,500,800,800];
$maxProgramFees = max($programFees);
$sum = array_sum(array_diff($programFees, array($maxProgramFees)));

我认为rsort()答案是更快的选择。