PHP: Getter 和 Setter 在使用数组时?
PHP: Getter and Setter while using Arrays?
我对 php 非常陌生,所以如果您认为我的代码一团糟,请原谅我的代码,但我已经花了好几个小时来解决这个问题。
我正在尝试使用 getter 和 setter 方法从 class 中提取功能,然后使用数组创建基于 class 的新对象。 $_GET
是从 HTML 形式获取输入 foodNumber
,该形式确定选择数组中的哪个位置。所以如果在表格中输入0,则表示Salad
,如果在表格中输入2,则应表示Vegetables
.
所以在我看来,$foodObject
正在从 class FoodArray
创建一个新对象。我试图让对象在一个数组中,所以在这种情况下 $foodArray
。但是我不知道如何使用 getter setter 方法使用 class 函数通过数组输入值或如何调用它们。
提前致谢!
<?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 表格/////
<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>
如果问题是 echo "The food item you choose is".$foodArray[$foodnumber];
没有产生您期望的结果,则有两个潜在问题:
- 我不清楚你
$foodObject
的意图。但是,$foodArray=$foodObject->getFoodValue();
可能会把它搞砸,除非内部 $foodValue
属性 是(像)你用沙拉、蔬菜等声明的 $foodArray
- 当回显
$foodArray[$foodnumber]
时,数字中的 'n' 是小写的,上面你设置了 $foodNumber
(大写 'N')
我不确定您的最终意图是什么,但我可以尝试指出您出错的几个地方:
- 从未调用
FoodArray
对象的 setFoodValue()
方法,因此 $foodValue
没有值
$foodArray
被设置为一个数组,但当您调用行 $foodObject->getFoodValue()
时立即被覆盖
$foodObject->getFoodValue()
实际上 returns 没什么,因为 $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];
我对 php 非常陌生,所以如果您认为我的代码一团糟,请原谅我的代码,但我已经花了好几个小时来解决这个问题。
我正在尝试使用 getter 和 setter 方法从 class 中提取功能,然后使用数组创建基于 class 的新对象。 $_GET
是从 HTML 形式获取输入 foodNumber
,该形式确定选择数组中的哪个位置。所以如果在表格中输入0,则表示Salad
,如果在表格中输入2,则应表示Vegetables
.
所以在我看来,$foodObject
正在从 class FoodArray
创建一个新对象。我试图让对象在一个数组中,所以在这种情况下 $foodArray
。但是我不知道如何使用 getter setter 方法使用 class 函数通过数组输入值或如何调用它们。
提前致谢!
<?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 表格/////
<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>
如果问题是 echo "The food item you choose is".$foodArray[$foodnumber];
没有产生您期望的结果,则有两个潜在问题:
- 我不清楚你
$foodObject
的意图。但是,$foodArray=$foodObject->getFoodValue();
可能会把它搞砸,除非内部$foodValue
属性 是(像)你用沙拉、蔬菜等声明的$foodArray
- 当回显
$foodArray[$foodnumber]
时,数字中的 'n' 是小写的,上面你设置了$foodNumber
(大写 'N')
我不确定您的最终意图是什么,但我可以尝试指出您出错的几个地方:
- 从未调用
FoodArray
对象的setFoodValue()
方法,因此$foodValue
没有值 $foodArray
被设置为一个数组,但当您调用行$foodObject->getFoodValue()
时立即被覆盖
$foodObject->getFoodValue()
实际上 returns 没什么,因为$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];