2010-05-10 6 views
1

Мне нужен простой скрипт, который читает число из POST (мы будем называть значение «number»). Это будет три значный номер, который должен находиться в диапазоне от следующего:Нужна помощь в создании PHP-эхо-скрипта из диапазона чисел

301-340

401-440

501-540

601-640

701-740

801-840

Если он не попадает в эти ра nges, мне нужно эхо-сообщение. Как это сделать?

ответ

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, он может просто вычитаем один, возьмем его по модулю 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().

Смежные вопросы