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

问题描述 投票:0回答:1

有谁知道为什么我一直出现错误?我试了很多次都没弄明白。我的代码有什么问题?我们的目标是根据用户使用表单输入的城市名称来计算两个城市之间的距离。

<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";
}
php forms multidimensional-array associative-array
1个回答
0
投票

你试图用数字键访问一个关联数组,这是不可能的。然而你的代码可以写得更简单,只需将城市名索引为 $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";
}

3v4l.org上的演示

© www.soinside.com 2019 - 2024. All rights reserved.