массив в функции php не определен

1

В целях обучения мне нужно сделать функцию, которая говорит мне "стоимость поездки" между 2 городами. В книге говорится, что я набираю эту функцию:

<?php
function travelcost($start, $destination)
{
$travelcost = array();
$travelcost[1] = array();
$travelcost[2] = array();
$travelcost[3] = array();
$travelcost[4] = array();
$travelcost[1][1] = 0;
$travelcost[1][2] = 30;
$travelcost[1][3] = 60;
$travelcost[1][4] = 90;

echo($travelcost[$start][$destination] . " Euro's");
}
?>

Кроме того, я создал эту форму, чтобы спросить о начале и месте назначения:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Start: <select name="start" value="true">
<option value="start[]">Amsterdam</option>
<option value="start[]">Utrecht</option>
<option value="start[]">Den Haag</option>
<option value="start[]">Rotterdam</option>
</select>

Destination: <select name="destination" value="true">
<option value="destination[]">Amsterdam</option>
<option value="destination[]">Utrecht</option>
<option value="destination[]">Den Haag</option>
<option value="destination[]">Rotterdam</option>
</select>
<p><input type="submit" name="calculate" value="Calculate"</p>
</form>

С последующим:

<?php

if(isset($_POST["start"])&& isset($_POST["destination"]))
{
travelcost($_POST['start'], $_POST['destination']);
}

?>

Это дает мне Undefined index: start []

Я знаю, что я делаю это неправильно, но я просто не вижу логики в функции и массиве. Я предполагаю, что функция правильная, потому что она прямо из книги, но я тоже не уверен в этом.

Кто-нибудь может мне помочь?

  • 0
    Это действительно так. Но я пытаюсь заставить функцию работать. функция заканчивается эхом. ошибка говорит о том, что в этой строке «начало» не определено
  • 0
    Я пытаюсь быть немного ироничным .. Искренне я не хотел бы поддерживать такой код ... без обид ... пожалуйста, взгляните на код в следующем году ... если вы поймете что-нибудь менее чем за 10 минут, у вас будет пиво от меня ...
Показать ещё 2 комментария
Теги:
arrays
function

1 ответ

1
Лучший ответ

Это не верно,

<option value="start[]">Amsterdam</option>
              ^      ^

Должен быть

<option value="start">Amsterdam</option>

или

<option value="Amsterdam">Amsterdam</option>

То же самое для всех параметров в начале и в пункте назначения.

Согласно вашей функции "travelcost(), ваш выбор должен быть

Start: <select name="start" value="true">
    <option value="1">Amsterdam</option>
    <option value="1">Utrecht</option>
    <option value="1">Den Haag</option>
    <option value="1">Rotterdam</option>
</select>

Destination: <select name="destination" value="true">
    <option value="1">Amsterdam</option>
    <option value="2">Utrecht</option>
    <option value="3">Den Haag</option>
    <option value="4">Rotterdam</option>
</select>
  • 0
    Спасибо за быстрый ответ! Я изменил его на «начало», но оно все еще не определено в функции.
  • 0
    Значения для всех вариантов одинаковы
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню