-1

如果用户输入非数字输入或大于 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 但是......这在我看来要干净得多。

谢谢大家!

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

4

4 回答 4

3

intval returns 0 if a non integer is passed to it. Then check it is between range.

 $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.";
 }

Without setting variable in if:

 $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

于 2013-10-14T09:54:24.620 回答
0

Simply cast to int and use regular conditions:

$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!
}

Note: This will also turn 1.234 into 1

于 2013-10-14T09:54:46.873 回答
0

可能是你需要这个..你为什么要迭代它。?

 $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.";
 }
于 2013-10-14T09:52:35.233 回答
0

你可以试试这个。

 $rows = (isset($_GET['rows']) ? $_GET['rows'] : 0);

 if (is_numeric($rows) && $rows >= 1 && $rows <= 10) {
    echo "Ok";
 } 
 else {
    echo "Fail";
 }
于 2013-10-14T09:57:56.027 回答