注意:未定义的偏移量:0(多维关联数组)

Notice: Undefined offset: 0 (Multidimensional Associative Arrays)

有人知道为什么我总是收到错误消息吗?试了很多次都想不通
我的代码有什么问题?
目标是根据用户使用表单输入给出的城市名称计算两个城市之间的距离。

<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";
}

您正在尝试使用数字键访问关联数组,但这不起作用。然而,您的代码可以更简单地编写,只需使用 $_POST['start']$_POST['end']:

索引 $Distances 数组
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";
}

Demo on 3v4l.org