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 €"; ?>
</td>
</tr>
</table>
</body>
</html>

发生这种情况的原因是因为$xx是字符串类型,而您正在与0809进行比较,它们是"无效的数字字面量"根据PHP。数字099不同,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>

相关内容

  • 没有找到相关文章