我需要一个简单的脚本,从POST读取一个数字(我们称之为'数字')。它将是一个三位数字,必须包含以下内容:
301-340
401-440
501-540
601-640
701-740
801-840
如果不属于这些范围,我需要回复一条消息。怎么会这样做?
答案 0 :(得分: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")。
答案 1 :(得分: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; }
答案 2 :(得分: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()。