2010-05-10 38 views
1

我需要一個簡單的腳本,從POST讀取一個數字(我們將調用值'數字')。這將是必須的範圍從以下三個數字:需要幫助來創建一個範圍的數字的PHP回聲腳本

301-340

401-440

501-540

601-640

701-740

801-840

如果它不落在這些ra年齡,我需要回應一條消息。如何做到這一點?

回答

0
 
$n = (int)$_POST['number']; 
switch(true) { 
case $n >= 301 && $n <= 340: 
case $n >= 401 && $n <= 440: 
case $n >= 501 && $n <= 540: 
// ETC 
    // number is OK, break out of switch 
    break; 
default: 
    echo "Number '$n' is invalid!<br />"; 
    exit; 
} 
1
if($number <= 300 || $number > 840 || (($number-1) % 100) >= 40) { 
    echo "Number was not in ranges!"; 
} 

這需要的%(模)運算符由數除以時返回餘數的優勢 - 這樣,因爲你想要的數字,其中剩餘模100爲1-40,它可以只減1,取模100,然後看看是否是40+(因爲1-40現在是0-39)。

只要你的範圍遵循設定的模式,這種方法很好,簡潔。如果您需要更多定製各個範圍,請使用switch語句(有關此示例,請參閱answer from "too much php")。

0

這一個是有點不同。希望陣列建設不會增加太多太多開銷。

// Possible answers 
$validInputs = array_merge(range(301, 340), range(401, 440), range(501, 540)); // and so forth... 

$input = (int) $_POST['input']; 

if (! in_array($input, $validInputs)) { 
    echo 'Got an error!'; 
} 

相關的文檔:range()array_merge()in_array()