Я чрезвычайно новичок в 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>
Я не совсем уверен, каково ваше окончательное намерение, но я могу попытаться указать пару мест, где вы ошибаетесь:
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];
Если проблема в том, что echo "The food item you choose is".$foodArray[$foodnumber];
не производит то, что вы ожидаете, есть две потенциальные проблемы:
$foodObject
, Тем не менее $foodArray=$foodObject->getFoodValue();
может испортить, если внутренний $foodValue
свойство (как) $foodArray
Вы заявляете с салатом, овощами и т. д.$foodArray[$foodnumber]
номер ‘n’ в нижнем регистре, где вы установите выше $foodNumber
(заглавная ‘N’)