PHP:使用数组时的Getter和Setter?

时间:2016-05-01 03:40:56

标签: php arrays methods setter getter

我是非常新的php,所以请原谅我的代码,如果你认为它是一团糟但我一直在努力解决这个问题几个小时。

我正在尝试使用getter和setter方法从类中提取功能,然后使用数组根据类创建新对象。 $_GET是从HTML表单中获取输入foodNumber,该表单确定选择数组中的哪个位置。因此,如果在表单上输入0,则表示Salad,如果在表单上输入2,则表示Vegetables

所以在我看来,$foodObject正在从class FoodArray创建一个新对象。我试图让对象在一个数组中,所以在这种情况下$foodArray。但是我不知道如何使用类函数的getter setter方法或者如何调用它们来通过数组输入值。 提前谢谢!

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

2 个答案:

答案 0 :(得分:1)

我不完全确定你的最终目的是什么,但我可以试着指出你出错的几个地方:

  • 永远不会调用setFoodValue()对象的FoodArray方法,因此$foodValue没有值
  • $foodArray设置为数组,但在您拨打专线$foodObject->getFoodValue()
  • 时会立即覆盖
  • $foodObject->getFoodValue()实际上没有返回任何内容,因为$foodValue从未设置

如果您传递的数组或字符串可以传递它们并以相同的方式检索它们,那么getter和setter应该没有区别。

再次不确定你想要完成什么,但你可以尝试这样的事情:

$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 :(得分:0)

如果问题是echo "The food item you choose is".$foodArray[$foodnumber];没有产生您期望的结果,则存在两个潜在问题:

  1. 我不清楚$foodObject的意图。但是,$foodArray=$foodObject->getFoodValue();可能会弄乱它,除非内部$foodValue属性是(例如)您使用沙拉,蔬菜等声明的$foodArray
  2. 当回复$foodArray[$foodnumber]时,&#39; n&#39;数字是小写的,上面设置$foodNumber(资本&#39; N&#39;)