有谁知道为什么我一直出现错误?我试了很多次都没弄明白。我的代码有什么问题?我们的目标是根据用户使用表单输入的城市名称来计算两个城市之间的距离。
<form action="eudistance.php" method="post">
<input type="text" name="Start" placeholder="Start City...">
<input type="text" name="End" placeholder="End City...">
<input type="submit" name="submit" value="Calculate">
</form>
$Distances = array(
"Berlin" => array("Berlin" => 0, "Moscow" => 1607.99, "Paris" => 876.96, "Prague" => 280.34, "Rome" => 1181.67),
"Moscow" => array("Berlin" => 1607.99, "Moscow" => 0, "Paris" => 2484.92, "Prague" => 1664.04, "Rome" => 2374.26),
"Paris" => array("Berlin" => 876.96, "Moscow" => 641.31, "Paris" => 0, "Prague" => 885.38, "Rome" => 1105.76),
"Prague" => array("Berlin" => 280.34, "Moscow" => 1664.04, "Paris" => 885.38, "Prague" => 0, "Rome" => 922),
"Rome" => array("Berlin" => 1181.67, "Moscow" => 2374.26, "Paris" => 1105.76, "Prague" => 922, "Rome" => 0)
);
if(isset($Distances)) {
for ($i = 0; $i < count($Distances); $i++) {
for ($d = 0; $d < count($Distances[$i]); $d++) {
if(($_POST['start'] == $Distances[$i]) && ($_POST['end'] == $Distances[$i][$d])) {
print $Distances[$i] * $Distances[$i][$d];
}
};
};
} else {
echo "Array does not exist";
}
你试图用数字键访问一个关联数组,这是不可能的。然而你的代码可以写得更简单,只需将城市名索引为 $Distances
阵列与 $_POST['start']
和 $_POST['end']
:
echo $Distances[$_POST['start']][$_POST['end']] ?? 'Unknown';
例如,如果 $_POST = array('start' => 'Paris', 'end' => 'Berlin')
这样一来
876.96
如果有可能 $_POST['start']
或 $_POST['end']
可能没有设置,使用这段代码可以防止警告。
if (isset($_POST['start'], $_POST['end'], $Distances[$_POST['start']][$_POST['end']])) {
echo $Distances[$_POST['start']][$_POST['end']];
}
else {
echo "Unknown";
}