-6

我目前正在学习初级 PHP 编程课程,我需要一些帮助来解决我正在尝试解决的一项任务。任务是创建一个表单,用户可以在其中输入一个正整数。然后,使用“for”循环显示由“hr”标签创建的水平线数量[提示:<hr size=1 width=50% color='black'>]。最后,使用 if 语句执行“模数”计算。当“for”循环中的计数器为偶数时,将水平线的宽度设置为 50%;否则,将水平线的宽度设置为 100%。

这是我到目前为止提出的代码:

<?php

if ($_POST) { // if the form is filled out
$integer = $_POST["pi"];

$i = $integer;

for ($i = 1; $i <= $integer; $i++) {
if ($i % 2) { // modulus operator
echo "<hr size=1 width=50% color='black'>";
} else {
echo "<hr size=1 width=100% color='red'>";
}

}
}
else { // otherwise display the form
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Enter a <i>Positive Integer</i>:
<input type="text" name="pi" size=5>
<input type="submit" value="Check"></form></p>
<?php
}
?>

我还不能发布图像,但示例输出应该是 50% 黑色水平线,然后是 100% 红色水平线,直到达到输入的整数。在每个小时之间似乎有一些间隔。

4

4 回答 4

0

问题是您分配的 $i 等于变量 $integer,因此它们是相同的值。

    <?php
if ($_POST)
{ // if the form is filled out
    $integer = $_POST["pi"];
    for ($i = 1; $i <= $integer; $i++)
    {
        if ($i % 2 ===0)
        { // modulus operator
            echo "<hr size=1 width=50% color='black'>";
        }
        else
        {
            echo "<hr size=1 width=100% color='red'>";
        }
    }
}
else
{ // otherwise display the form
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Enter a <i>Positive Integer</i>:
<input type="text" name="pi" size=5>
<input type="submit" value="Check"></form></p>
<?php
}
?>
于 2013-10-10T23:00:42.050 回答
0

目前尚不清楚问题是什么。如果问题是您的 HR 元素之间有空格,那么删除默认边距会有所帮助(至少在 Firefox 中,我不确定是否所有浏览器都在 HR 上使用相同的呈现规则)。

<hr size="1" width=50% color='black' style="margin:0;" />
<hr size="1" width=100% color='red' style="margin:0;" />
于 2013-10-10T23:08:11.590 回答
0

这一行:

$i = $integer;

...是多余的,只要你说for($i = ..., $i 就会被覆盖。在你的情况下,应该是这样。把那条线拿出来开始。

其次,我认为您遇到的问题是您的线条没有显示为黑色或红色。原因是这color是一个字体属性,您应该查看这篇文章以了解如何更改颜色: 更改 hr 元素的颜色

我建议在你的 PHP 中使用class='black'and 并class='red'在你的 CSS 中设置类。

于 2013-10-10T23:09:37.800 回答
0

使用此 CSS 代码格式化所有 hr 元素

<style type="text/css">
hr {margin: 0px auto 0px auto;}
</style>
于 2013-10-10T23:13:37.673 回答