代码之家  ›  专栏  ›  技术社区  ›  502_Geek

从数组中获取最大值后,如何将所有剩余金额相加?

  •  5
  • 502_Geek  · 技术社区  · 7 年前

    我对这个问题犹豫不决,该不该问。我认为这是一个更符合逻辑的问题。但是,我真的搞不懂。

    我有一个数组,可能包括

    $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 回复  |  直到 7 年前
        1
  •  5
  •   helllomatt    7 年前

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

    <?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

        2
  •  1
  •   Alex Barker    7 年前

    @helllomatt已经提供了一个很好的答案,但是,如果由于某种原因无法修改数组顺序,则可能需要尝试类似的方法。

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

    我假设 rsort() 答案是更快的选择。