2017-12-07 4 views
4

私はこの質問に躊躇しましたか、私は尋ねるべきかどうかは分かりません。これははるかに論理的な質問だと私は思う。しかし、私はそれを実際に把握することはできません。配列から最大値を得た後に、どのようにしてリミティング量を合計しますか?

私はmax($programFees)を使用して、この配列から最大値を得ることができます

$programFees = [100,200,100,500,800,800] 

を含むことができ、配列を持っています。私が800,800のような2つの最大値を持っているなら、私は1つしか取るつもりはありません。私はPHP maxがこれを解決できることに気づいた。

しかし、私はその配列から残りの量を合計したいと思います。

例えば

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

私の総量は1700でなければなりません。この金額を得るにはどのアプローチをとるべきですか?

答えて

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

+2

どのような素晴らしいアイデアです! –

+1

'array_shift()'は最初の値を返しますので、 '$ highest = array_shift($ programFees);で簡略化できます。 –

1

が@helllomattはすでに非常に良い答えを提供している追加このようなことを試みる。

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

私はrsort()答えがより速いオプションであると思います。

+0

ニースでクリーンなオプションです。投票もアップします。 –

関連する問題