[英]PHP(simple): Trouble with loops
我对编程非常陌生,我正在尝试创建一个从摄氏温度到华氏温度到开尔文的转换器。 用户在2个输入框中输入要转换的值(以摄氏度为单位),并使用循环创建表。 输出以摄氏度为单位的第一组数据看起来不错,但是第二个数据流(华氏度)将仅输出一个摄氏值,这是摄氏循环中最终数字的转换值。
<form name="calculator" action="" method="post">
From: <input class="inputbox" type="number" name="one" value="" /><br />
<p>to</p><br>
To: <input class="inputbox" type="number" name="two" value="" /><br />
<input type="submit" class="submit" name="submit" value="Get Conversions!" />
</form>
<br>
<table border='1' cellpadding='5px'>
<tr>
<th>Degrees Celsius</th>
<?php
if ($_POST['submit']) {
$one = $_POST['one'];
$two = $_POST['two'];
}
if ($two < $one) {
echo "<p>Please put the lowest number in the first input box.</p>";
} else if ($one < (-273) OR $two < (-273)) {
echo "<p> Tempature cant go below -273 Celsius (0 kelvin), please enter higher values.</p>";
} else {
$c = $one - 1;
do {
$c++;
echo "<td>" . $c . "</td>";
} while ($c < $two);
}
?>
</tr>
<tr>
<th>Degrees Fahrenheit</th>
<?php
$f = (1.8 * $c) + 32;
do {
$c++;
echo "<td>" . $f . "</td>";
} while ($c < $two);
$k = $x - 273;
?>
</tr>
</table>
您的代码中有2个问题。
一个问题是,您只分配了一次c,当您运行第一个while时,它会将C向上计数,然后当您到达第二个do {} while()时,它已经全部就绪。
您应该在第一个while循环之后“重置” C,如下所示:
<th>Degrees Fahrenheit</th>
<?php
$c = $one - 1;
其次,您只计算一次f变量,您应该为此函数做一个函数(在这种情况下可能会过大),或者在while循环内将f的计算向下移动,代码的最后一部分将是这样的华氏度
<?php
$c = $one - 1;
do {
$f = (1.8 * $c) + 32;
$c++;
echo "<td>" . $f . "</td>";
} while ($c < $two);
$k = $x - 273;
?>
</tr>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.