2012-08-06 81 views
4

我的應用程序生成的隨機整數0之間和1000確定數字在哪個範圍內的最有效方法?

我有5個範圍:0-5051-250251-500501-700701-1000。 (請注意範圍大小不相等。)

我將分別稱爲「0」,「50」,「250」,「500」,「700」(將在我的數據庫中存儲這些名稱)。

我知道我可以做到以下幾點:

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

else if... 

...等等。

但是有沒有更有效的方法呢?

非常感謝。問候

+3

糾正你的範圍。一個數字不能在2個範圍內。使它0-49,50-249,500-699,700-1000 – Rizstien 2012-08-06 17:37:25

+0

是的感謝,讓我注意到。 Regards – alexx0186 2012-08-06 17:38:52

回答

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'; 
... 
+0

您好,非常感謝您的回覆。否則,如果確實有效。問候 – alexx0186 2012-08-06 17:34:24

+0

不會'交換'更有效,處理器明智嗎? – Sablefoste 2012-08-06 17:34:27

+0

@SableFoste你將如何使用'switch'作爲範圍? – Neal 2012-08-06 17:34:46

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

foreach($ranges as $range){ 
if ($number>$range) 
    continue; 
else 
    return prev($ranges); 
} 
+4

爲什麼'if($ number <$ range)返回prev($ range);'? – Neal 2012-08-06 17:39:54

+0

如果OP希望代碼更加靈活,@Neal voodoo的回答和您的評論都是很好的解決方案。 – Matt 2012-08-06 17:41:48

+0

嗨,謝謝你的幫助。看來兩種解決方案都是可行的。問候 – alexx0186 2012-08-06 17:45:18

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"; 
    } 
} 
4
$startPoints = array(700, 500, 250, 50); 

$num_range = 0; 
foreach ($startPoints as $from) { 
    if ($number >= $from) { 
     $num_range = $from; 
     break; 
    } 
} 
相關問題