2011-01-14 14 views
0

を複数の値を比較し、それらを形成する、私は配列があります。PHP - だから、特定の順序で

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

を、私は、各別にそれぞれの値を比較すると、彼らのために4(または5)の状態をエコーし​​ます(1 - 最低、2 - 低、3 - 中、4 - 最高)。 PHPでどうやったらいいですか?

私は(高、低、中、)のみ3つの状態をエコーすることができる方法を知っている:

$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 />'; 
} 

エコーは次のようになります。私は4(または5)を必要とする場合

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

しかし、ステータス?あなたが領域を定義するにはどうすればよい

+0

ステータスをどのように選択しますか? – Twister

+0

各ステータスの意義は何ですか? –

答えて

0

? 1つの方法は、最小値と最大値の差をとり、範囲の数で除算することです。

$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

関連する問題