PHP - сравнить несколько значений и сформировать их в определенном порядке - PullRequest
0 голосов
/ 14 января 2011

Итак, у меня есть массив:

$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

Но если мне нужно четыре (или пять) статусов?

1 Ответ

0 голосов
/ 14 января 2011

Как вы хотите определить регионы? Один из способов - взять разницу между 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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...