需要帮助从一系列数字创建PHP echo脚本

时间:2010-05-10 01:22:04

标签: php list range

我需要一个简单的脚本,从POST读取一个数字(我们称之为'数字')。它将是一个三位数字,必须包含以下内容:

301-340

401-440

501-540

601-640

701-740

801-840

如果不属于这些范围,我需要回复一条消息。怎么会这样做?

3 个答案:

答案 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()