所以我有一个问题与我的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 €"; ?>
</td>
</tr>
</table>
</body>
</html>
发生这种情况的原因是因为$xx
是字符串类型,而您正在与08
和09
进行比较,它们是"无效的数字字面量"根据PHP。数字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 €"; ?>
</td>
</tr>
</table>
</body>
</html>