2016-05-01 2 views
0

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

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

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

<?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> 
+1

Что это $ _GET Н. foodArray должны делать с функциями класса? Пожалуйста, объясните это четко. –

+0

Дайте больше информации, будьте понятны. – olibiaz

+0

Извините, что '$ _GET' должен получить вход' foodNumber' из HTML-формы, которая определяет, какая позиция в массиве выбрана. Поэтому, если в форму вводится 0, она представляет собой «Салат», если в форму вводится 2, это означает «Овощи». Это имеет смысл? Извините, я не объясняю это правильно! –

ответ

1

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

  • setFoodValue() метод FoodArray o ▪ Таблица никогда не называется так $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]; 
+0

Ты потрясающий !! Это именно то, что я пытался объяснить. Вы, должно быть, какой-то секретный кодовый выключатель, расшифровавший его из моего плохого объяснения! Hahha! Огромное спасибо!!!! –

0

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

  1. Я не понимаю цель вашего $foodObject. Однако $foodArray=$foodObject->getFoodValue(); может испортить его, если внутренняя $foodValue свойство не является (как) $foodArray вы заявляете с салатом, овощами и т.д.
  2. Когда эхо-ки $foodArray[$foodnumber], то «п» число в нижнем регистре, где над вами установить $foodNumber (капитал «N»)
+0

Благодарим вас за ответ! Поэтому, на мой взгляд, $ foodObject создает новый объект из класса FoodArray.Я пытаюсь сделать объекты в массиве, поэтому в этом случае '$ foodArray'. Но я не знаю, как вводить значения через массив, используя метод set getter, используя функции класса. У меня нет моей головы полностью вокруг терминологии PHP, но я извиняюсь, если я сделал это более запутанным! –