2011-01-14 54 views
0

所以形成它們,我有一個數組:PHP - 比較多個值,並在特定的順序

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

我想比較與每個另一每個值和回聲四個(或5)的狀態爲它們(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 2011-01-14 12:42:56

+0

每種狀態的意義是什麼? – 2011-01-14 12:45:55

回答

0

你想如何定義區域?一種方法是取最小值和最大值之間的差值,並將其除以範圍的數量。

$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"; 
}