我应该构建一个脚本,以便在用户输入非数字输入或大于 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