首页 > 解决方案 > PHP问题:高速公路的第8和第9个入口不起作用

问题描述

所以我的 PHP 代码有问题。简直就是高速公路计算器,当你进入高速公路时,你会收到一张有4个数字的票:前两个是高速公路入口的号码(0到9),后两个是车辆(摩托车是10) , 11 用于汽车,12 用于卡车)。当我输入 0711 票时,我有这个:票高速公路。但是当我输入 0811 或 0911 票时,我有这个:2 号公路票,我不知道为什么请大家帮助我。(我的英语很糟糕,我是法国人,所以如果你什么都不懂,我很抱歉)。

这是我的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        table{
        border-collapse: collapse;
        background-color:lightblue;
        }

        th, td{
        border: 1px solid black;
        padding: 10px;
        }

    </style>
</head>
<body>
<?php
        if (isset($_POST['ticket']))
        {
            $ticket=$_POST['ticket'];
            $xx=substr($ticket,0,-2);
            $yy=substr($ticket,2,4);

            if ($xx==00)
            {
                $km=200;
            }
            elseif ($xx==01)
            {
                $km=180;
            }
            elseif ($xx==02) 
            {
                $km=160;
            }
            elseif ($xx==03) 
            {
                $km=140;
            }
            elseif ($xx==04) 
            {
                $km=120;
            }
            elseif ($xx==05) 
            {
                $km=100;
            }
            elseif ($xx==06) 
            {
                $km=80;
            }
            elseif ($xx==07) 
            {
                $km=60;
            }
            elseif ($xx==08) 
            {
                $km=40;
            }
            elseif ($xx==09) 
            {
                $km=20;
            }

            if ($yy==10)
            {
                $prix=0.05*$km*0.5;
            }
            elseif ($yy==11)
            {
                $prix=0.05*$km*1;
            }
            elseif ($yy==12) 
            {
                $prix=0.05*$km*1.2; 
            }

            echo "type de véhicule : $yy<BR>";
        }
    ?>
    <table>
        <tr>
            <td>
                n° entrée de péage : 
            </td>
            <td>
                <?php echo $xx; ?>
            </td>
        </tr>
        <tr>
            <td>
                Kilomètres : 
            </td>
            <td>
                <?php echo "$km kms"; ?>
            </td>
        </tr>
        <tr>
            <td>
                Catégorie véhicule : 
            </td>
            <td>
                <?php 
                    if ($yy==10)
                    {
                        echo "Moto";
                    }
                    elseif ($yy==11) 
                    {
                        echo "Voiture";
                    }
                    elseif ($yy==12) 
                    {
                        echo "Camion";
                    }
                ?>
            </td>
        </tr>
        <tr>
            <td>
                Prix à payer : 
            </td>
            <td>
                <?php echo "$prix €&quot;; ?>
            </td>
        </tr>
    </table>
</body>
</html>

标签: phphtml

解决方案


发生这种情况的原因是因为$xx它是字符串类型,并且根据 PHP ,您正在08与哪些是“无效的数字文字”进行比较。09该数字09不同于9,PHP 尝试将其视为八进制数。您需要做的是与 比较"08"或键入字符串。将 PHP 代码与输出的表示分开也是一个好主意。

请看下面的例子:

<?php

$km_map = array(
    "00" => "200",
    "01" => "180",
    "02" => "160",
    "03" => "140",
    "04" => "120",
    "05" => "100",
    "06" => "80",
    "07" => "60",
    "08" => "40",
    "09" => "20"
);

if (isset($_POST['ticket']))
{
    $ticket = $_POST['ticket'];
    $xx = substr($ticket,0,-2);
    $yy = substr($ticket,2,4);

    $km = $km_map[$xx];

    $prix = 0.0;
    $vehicle = "";

    switch ($yy)
    {
        case "10":
            $prix = 0.05 * $km * 0.5;
            $vehicle = "Moto";
            break;

        case "11":
            $prix = 0.05 * $km * 1;
            $vehicle = "Voiture";
            break;

        case "12":
            $prix = 0.05 * $km * 1.2;
            $vehicle = "Camion";
            break;
    }
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        table{
        border-collapse: collapse;
        background-color:lightblue;
        }

        th, td{
        border: 1px solid black;
        padding: 10px;
        }

    </style>
</head>
<body>
    <table>
        <tr>
            <td>
                n° entrée de péage : 
            </td>
            <td>
                <?php echo $xx; ?>
            </td>
        </tr>
        <tr>
            <td>
                Kilomètres : 
            </td>
            <td>
                <?php echo "$km kms"; ?>
            </td>
        </tr>
        <tr>
            <td>
                Catégorie véhicule : 
            </td>
            <td>
                <?php echo $vehicle; ?>
            </td>
        </tr>
        <tr>
            <td>
                Prix à payer : 
            </td>
            <td>
                <?php echo "$prix €&quot;; ?>
            </td>
        </tr>
    </table>
</body>
</html>

推荐阅读