php - 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
它是字符串类型,并且根据 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 €"; ?>
</td>
</tr>
</table>
</body>
</html>
推荐阅读
- c# - 使用 SkiaSharp 进行轮播视图
- reactjs - Reactjs 电子邮件框架
- google-apps-script - 您可以在 gas 中创建电子表格并获取 ID 和 getActive 吗?
- sql - 用于连接子句的 TypeORM 多重条件
- python - Pip 无法使用 Python 3.8.5 安装 PyTorch
- c - 打印结构指针 c
- c# - Neo4jClient中yield后对Nodetypes进行排序
- swift - 输入后关闭键盘
- java - 如何使用 Streams 从 Java Selenium 的下拉列表中选择一个元素
- r - 使用 MatchIT 进行 R 倾向得分匹配