2010-05-10 3 views

Répondre

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!"; 
} 

Cela tire profit de la % (modulo) opérateur qui retourne le reste lors de la division par un nombre - donc puisque vous chiffres vouloir où le reste modulo 100 est 1-40, il peut juste soustrayez-en un, prenez le modulo 100, puis voyez si c'est 40+ (puisque 1-40 est maintenant 0-39).

Cette approche est agréable et concise, tant que vos plages suivent ce modèle. Si vous avez besoin de plus de personnalisation des plages individuelles, utilisez une instruction switch (voir le answer from "too much php" pour un exemple).

0

Celui-ci est un peu différent. Espérons que le bâtiment de tableau n'ajoute pas trop beaucoup de frais généraux.

// 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!'; 
} 

docs pertinents: range(), array_merge() et in_array().

Questions connexes