我应该构建一个脚本,以便在用户输入非数字输入或大于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但是...这在我看来更清晰。
全部谢谢!
明天下班后我会回答这个问题。
答案 0 :(得分:3)
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.";
}
答案 1 :(得分: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.";
}
答案 2 :(得分:0)
简单地转换为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
答案 3 :(得分:0)
你可以试试这个。
$rows = (isset($_GET['rows']) ? $_GET['rows'] : 0);
if (is_numeric($rows) && $rows >= 1 && $rows <= 10) {
echo "Ok";
}
else {
echo "Fail";
}