2011-01-14 7 views
0

에서 그들을 형성, 내가 배열이 : 나는 다른 각 각 값을 비교하고 사 (5)를 에코 할PHP 여러 값을 비교하고 특정 순서 그래서

$n=array('175','102','99','10','250','302'); 

그들을 위해 상태들 (1 - 최저, 2 - 낮음, 3 - 중간, 4 - 최고). PHP로 어떻게 할 수 있습니까?

$status=array(); 
$min_n=min($n); 
$max_n=max($n); 

for($i=0;$i<count($n);$i++){ 
    if($n[$i]==$min_n){ 
     $status[$i]='1'; 
    }elseif($n[$i]==$max_n){ 
     $status[$i]='3'; 
    }else{ 
     $status[$i]='2'; 
    } 

    echo $n[$i].' status - '.$status[$i].'<br />'; 
} 

에코가 될 것입니다 :

는 내가 세 개의 상태 (높음, 낮음, 중간)를 에코 할 수있는 방법을 알고

175 status - 2 
102 status - 2 
99 status - 2 
10 status - 1 
250 status - 2 
302 status - 3 

을하지만 네 (5)을 필요로하는 경우 상태?

+0

상태를 어떻게 선택합니까? – Twister

+0

각 상태의 중요성은 무엇입니까? –

답변

0

어떻게 지역을 정의 하시겠습니까? 한 가지 방법은 min과 max의 차이를 취하여 범위 수로 나누는 것입니다.

$n=array('175','102','99','10','250','302'); 

$num_ranges = 5; 

$status=array(); 
$min_n=min($n); 
$max_n=max($n); 

$step = ($max_n + 1 - $min_n)/$ranges; 

for($i=0;$i<count($n);$i++){ 

    $status[$i] = ceil(($n[$i] + 1 - $min_n)/$step); 
    echo $n[$i].' status - '.$status[$i]."\n"; 
} 
+0

그게 효과가 있지만 ... 가장 낮은 값은 '1'상태 여야하고 가장 높은 상태는 '5'상태 여야하며 다른 값은 사이에 있어야합니다. 250과 302의 상태가 '5'인 경우 ... – user6291275

관련 문제