PHP 验证输入介于 0-10 之间,是一个数字


PHP Validating an input is between 0-10 and is a number?

我应该构建一个脚本,以便在用户输入非数字输入或大于 10 的值时提醒用户。

我有这个:

<form action="" method="get">
    <p>Iterations:
    <input type="text" name="rows" size="5">
    <input type="submit" value="Loop">
    </p>
</form>
<table border='1' cellpadding='3' cellspacing='0' bordercolor='#669999' align="center">
<?php
$rows = $_GET['rows'];
 for ( $i = 1; $i <= 10; $i++) { 
     if (is_numeric($i)) {
     echo "<tr><td>Iteration is $i</td></tr>";
     } 
 else {
     echo "Please enter a valid number between 1 and 10.";
     }
 }

 ?>

但是它只会返回一个迭代列表是 1-10,我无法让它迭代我输入的次数?

编辑:循环实际上对此至关重要。

我正在构建以前的脚本,如果输入 5,它会像这样循环:

迭代次数为 1

迭代次数为 2

迭代次数为 3

迭代次数为 4

迭代次数为 5

所以这就是我迭代它并循环它的原因。

提前感谢您的任何建议。

编辑#2

我已经修好了大家。

<?php
 $rows = $_GET['rows'];
 $value = intval($rows);
 if (1 <= $value && $value <= 10) {
     for ( $i = 1; $i <= $rows; $i++ ) { 
      echo "<tr><td>Iteration is $i</td></tr>";
   }
 } else {
    echo "Please enter a valid number between 1 and 10.";
 }
?>

我使用了$intval的组合来评估$rows的整数,并对其进行比较以查看它是否在 1 到 10 之间。

然后我根据作业循环了一下。

我们应该使用is_numeric但是...这在我脑海中要干净得多。

谢谢大家!

我明天下班后会回答这个问题。

如果将非整数传递给intval则返回 0。然后检查它是否在范围之间。

 $rows = $_GET['rows'];
 if (($value = intval($rows)) !== 0 && 1 <= $value && $value <= 10) {
    echo "Number is ok";
 } else {
    echo "Please enter a valid number between 1 and 10.";
 }

在以下情况下不设置变量:

 $rows = $_GET['rows'];
 $value = intval($rows);
 if (1 <= $value && $value <= 10) {
    echo "Number is ok";
 } else {
    echo "Please enter a valid number between 1 and 10.";
 }

intval : http://www.php.net/manual/en/function.intval.php

也许你需要这个。你为什么要迭代它。?

 $rows = $_GET['rows'];
 if (is_numeric($rows) && $rows <= 10 && $rows >= 1) {
    echo "Number is ok";
 } 
 else {
    echo "Please enter a valid number between 1 and 10.";
 }
你可以

试试这个。

 $rows = (isset($_GET['rows']) ? $_GET['rows'] : 0);
 if (is_numeric($rows) && $rows >= 1 && $rows <= 10) {
    echo "Ok";
 } 
 else {
    echo "Fail";
 }

只需投射到int并使用常规条件:

$rows = (!empty($_GET['rows']) ? (int)$_GET['rows'] : 0);
//Cast it!                       ^^^^^
if ($rows >= 1 && $rows <= 10) {
    //We got a match!
} else {
    //We don't have a match!
}

注意:这也会将1.234变成1