所以,我有一个数组:
$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
但是如果我需要四种(或五种)状态?
答案 0 :(得分: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";
}