繁体   English   中英

PHP(简单):循环麻烦

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM