PHP: Getter и Setter при использовании массивов?

Я чрезвычайно новичок в php, поэтому извините мой код, если вы думаете, что это беспорядок, но я пытался разобраться в этом часами.

Я пытаюсь использовать метод получения и установки, чтобы извлечь функциональность из класса, а затем использовать массив для создания новых объектов на основе класса. $_GET чтобы получить вход foodNumber из формы HTML, которая определяет, какая позиция в массиве выбрана. Таким образом, если 0 введен в форму, он представляет Salad, если в форме введено 2, это должно означать Vegetables,

Так что, на мой взгляд, $foodObject создает новый объект из class FoodArray, Я пытаюсь сделать объекты в массиве, поэтому в этом случае $foodArray, Но я не знаю, как вводить значения через массив с помощью метода-установщика, используя функции класса, или как их вызывать.
Заранее спасибо!

 <?php

class FoodArray {

private $foodValue;

public function setFoodValue($x){
$this->foodValue=$x;
}

public function getFoodValue(){
return $this->foodValue;
}
}$foodNumber = $_GET['foodNumber'];

$foodObject = new FoodArray;

$foodArray = array ("Salad", "Vegetables", "Pasta", "Pizza", "Burgers");
$foodArray=$foodObject->getFoodValue();

echo "The number you chose is ". $foodNumber;
echo "The food item you choose is".$foodArray[$foodNumber];

?>

///// HTML FORM /////

<html>
<body>

<form action="class_with_getter_and_setter.php" method="get">
<b>Choose a number between 0-4 and get a mystery food!</b>
<input type="text" name="foodNumber">

<input type="submit">

</form>

</body>
</html>

0

Решение

Я не совсем уверен, каково ваше окончательное намерение, но я могу попытаться указать пару мест, где вы ошибаетесь:

  • setFoodValue() метод FoodArray объект никогда не называется так $foodValue не имеет значения
  • $foodArray устанавливается как массив, но сразу перезаписывается при вызове строки $foodObject->getFoodValue()
  • $foodObject->getFoodValue() на самом деле ничего не возвращает, потому что $foodValue никогда не был установлен

Не должно быть никакой разницы в ваших методах получения и установки, если вы передаете массив или строку, вы можете передать их и получить их таким же образом.

Опять же, не уверен, что именно вы пытаетесь достичь, но вы можете попробовать что-то вроде этого:

$foodObject = new FoodArray;

$foodArray = array ("Salad", "Vegetables", "Pasta", "Pizza", "Burgers");
$foodObject->setFoodValue($foodArray);

$foodObjectArray = $foodObject->getFoodValue();

echo "The number you chose is ". $foodNumber;
echo "The food item you choose is".$foodObjectArray[$foodNumber];
1

Другие решения

Если проблема в том, что echo "The food item you choose is".$foodArray[$foodnumber]; не производит то, что вы ожидаете, есть две потенциальные проблемы:

  1. Мне не ясно, о намерениях вашего $foodObject, Тем не менее $foodArray=$foodObject->getFoodValue(); может испортить, если внутренний $foodValue свойство (как) $foodArray Вы заявляете с салатом, овощами и т. д.
  2. Когда эхо $foodArray[$foodnumber]номер ‘n’ в нижнем регистре, где вы установите выше $foodNumber (заглавная ‘N’)
0

По вопросам рекламы [email protected]