代码之家  ›  专栏  ›  技术社区  ›  Caleb

程序正在跳过if else语句中的if

  •  0
  • Caleb  · 技术社区  · 7 年前

    以下是我的php代码:

            <?php
                $amount = $_GET["startingAmount"];
                $whichWay = $_GET["whichWay"];
                $conversion = $_GET["conversion"];
                $step = $_GET["step"];
                if (is_numeric($conversion)) 
                {
                    if ($whichWay === "1") 
                    {
                        echo "<table>";
                            echo "<tr><th>USD</th><th>Canadian</th></tr>";
                            for ($i = 0; $i <= 10; $i++) 
                            {                        
                                $outputValue = $amount * $conversion;
                                echo "<tr><td>$amount</td><td>$outputValue</td></tr>";
                                $amount = $amount+$step;
                            }
                        echo "</table>";
                    } 
                    else
                    {
                        echo "<table>";
                            echo "<tr><th>Canadian</th><th>USD</th></tr>";
                            for ($i = 0; $i <= 10; $i++) 
                            {                        
                                $outputValue = $amount * $conversion;
                                echo "<tr><td>$amount</td><td>$outputValue</td></tr>";
                                $amount = $amount+$step;
                            }
                        echo "</table>";
                    }
                }
                else 
                {
                        echo "<p>You did not input a numeric value for both the amount you wanted to convert and for the conversion rate.<br>Please go back and do it again</p>";
                }
            ?>
    

    <body>
            <h1>USD/Canadian Money Conversion Site</h1>
            <div>
                <form method="get" action="output.php">            
                    Starting Amount: 
                        <select name="startingAmount" size="1">
                            <option name="1">1</option>
                            <option name="10">10</option>
                            <option name="20">20</option>
                        </select><br> 
                    Conversion type:
                        <select name="whichWay" size="1">
                            <option name="1">USD to Canadian</option>
                            <option name="2">Canadian to USD</option>
                        </select><br>  
                    Conversion Rate: <input type="text" name="conversion" required><br>
                    Step:
                        <select name="step" size="1">
                            <option name="1">1</option>
                            <option name="2">2</option>
                            <option name="3">3</option>
                            <option name="4">4</option>
                        </select><br> 
                    <input type="submit">
                </form>
            </div>
        </body>
    

    其他的都很好。程序可以运行else语句,其余变量工作正常。

    3 回复  |  直到 7 年前
        1
  •  3
  •   martincarlin87    7 年前

    改变 <option name="1"> <option value="1"> <option 元素。

        2
  •  1
  •   Carles    7 年前

    在“select”中,在每个选项中,都应该有“value='1'”等,而不是“name='1'”

        3
  •  1
  •   GrumpyCrouton    7 年前

    Option elements 在HTML中不要使用 name 属性,它们使用 value

    你的HTML应该改变以反映这一点;

    <form method="get" action="output.php">            
        Starting Amount: 
            <select name="startingAmount" size="1">
                <option value="1">1</option>
                <option value="10">10</option>
                <option value="20">20</option>
            </select><br> 
        Conversion type:
            <select name="whichWay" size="1">
                <option value="1">USD to Canadian</option>
                <option value="2">Canadian to USD</option>
            </select><br>  
        Conversion Rate: <input type="text" name="conversion" required><br>
        Step:
            <select name="step" size="1">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
            </select><br> 
        <input type="submit">
    </form>
    

    您的PHP代码也可以得到很大的改进,这相当于您当前的代码,但是您可以看到更短的代码并减少重复的代码。只需将新类型添加到 $types 数组。

    <?php
        $amount = $_GET["startingAmount"];
        $whichWay = $_GET["whichWay"];
        $conversion = $_GET["conversion"];
        $step = $_GET["step"];
    
        $types = [
            ["USD", "Canadian"],
            ["Canadian", "USD"]
        ];
    
        if (is_numeric($conversion)) 
        {
            echo "<table>";
    
                $type = $types[$whichWay - 1];
                //$type will now == ["USD", "Canadian"] (if $whichWay is 1), so you can use array indexes to select the proper label
    
                echo "<tr><th>{$type[0]}</th><th>{$type[1]}</th></tr>";
                for ($i = 0; $i <= 10; $i++) 
                {                        
                    $outputValue = $amount * $conversion;
                    echo "<tr><td>$amount</td><td>$outputValue</td></tr>";
                    $amount = $amount+$step;
                }
            echo "</table>";
        } else {
            echo "<p>You did not input a numeric value for both the amount you wanted to convert and for the conversion rate.<br>Please go back and do it again</p>";
        }
    ?>
    
    推荐文章