4

私のアプリケーションは、0〜1000のランダムな整数を生成します。

0-50私は5つの範囲を持ってい51-250ます251-500501-700、、、、、701-1000。(範囲のサイズは等しくないことに注意してください。)

これらの範囲をそれぞれ「0」、「50」、「250」、「500」、「700」と呼びます(これらの名前はデータベースに保存されます)。

私は次のことができることを知っています:

if ($number > 700 && $number <=1000)
       $num_range='700';

else if... 

... 等々。

しかし、それを行うためのより効率的な方法はありますか?

よろしくお願いします。よろしく

4

4 に答える 4

6
$ranges = array(0,50,250,500,700,1000....);  
$number = ....;

foreach($ranges as $range){
 if ($number>$range)
     continue;
 else 
     return prev($ranges);
}
于 2012-08-06T17:38:38.933 に答える
6

elseif効率的に利用する:

if($number <= 50)
    $num_range='0';
elseif($number <= 250)
    $num_range='50';
elseif($number <= 500)
    $num_range='250';
elseif($number <= 700)
    $num_range='500';
elseif($number <= 1000)
    $num_range='700';
...
于 2012-08-06T17:32:11.773 に答える
4
$startPoints = array(700, 500, 250, 50);

$num_range = 0;
foreach ($startPoints as $from) {
    if ($number >= $from) {
        $num_range = $from;
        break;
    }
}
于 2012-08-06T17:41:50.350 に答える
1
$range[0] = range(0, 49);
$range[50] = range(50, 249);
$range[250] = range(250, 499);
....

次に行います:

foreach($range as $r => $vals){
    if(in_array($number, $vals)){
        echo "Number is in range: $r";
    } 
}
于 2012-08-06T17:41:13.550 に答える