2012-08-06 48 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; 
    } 
} 
相关问题