2017-12-07 1 views
4

나는이 질문에 망설이게된다. 나는 이것이 훨씬 논리적 인 질문이라고 생각한다. 그러나, 나는 그것을 정말로 알 수 없다.배열에서 최대 값을 얻은 후에 모든 재량 금액을 어떻게 합산합니까?

나는

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

내가 max($programFees)을 사용하여이 배열에서 최대 값을 얻을 수 있습니다 포함 할 수있는 배열을 가지고있다. 800,800과 같은 최대 값이 2 개인 경우 하나만 사용하고 싶습니다. 나는 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

멋지고 깨끗한 옵션입니다. 투표도. –

관련 문제