【问题标题】:PHP: Getter and Setter while using Arrays?PHP:使用数组时的 Getter 和 Setter?
【发布时间】:2016-05-01 03:40:56
【问题描述】:

我对 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格式/////

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

【问题讨论】:

  • 这个 $_GET 和 foodArray 与类函数有什么关系?请解释清楚。
  • 提供更多信息,请清楚。
  • 抱歉$_GET 是从确定选择数组中哪个位置的 HTML 表单中获取输入 foodNumber。所以如果在表单上输入0,它代表Salad,如果在表单上输入2,它应该意味着Vegetables。这更有意义吗?对不起,我没有正确解释!

标签: php arrays methods setter getter


【解决方案1】:

我不确定您的最终意图是什么,但我可以尝试指出您出错的几个地方:

  • FoodArray 对象的setFoodValue() 方法永远不会被调用,因此$foodValue 没有任何值
  • $foodArray 被设置为一个数组,但是当你调用$foodObject-&gt;getFoodValue() 行时会立即被覆盖
  • $foodObject-&gt;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]; 

【讨论】:

  • 你太棒了!!这正是我试图解释的。你一定是某种神秘的密码破解者,从我糟糕的解释中破译了它!哈哈哈!非常感谢!!!!
【解决方案2】:

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

  1. 我不清楚您的$foodObject 的意图。但是,$foodArray=$foodObject-&gt;getFoodValue(); 可能会搞砸,除非内部 $foodValue 属性是(如)您在沙拉、蔬菜等中声明的 $foodArray
  2. 在回显$foodArray[$foodnumber] 时,数字中的“n”为小写,上面您设置$foodNumber(大写“N”)

【讨论】:

  • 感谢您的回复!所以在我看来,$foodObject 是从class FoodArray 创建一个新对象。我试图让对象在一个数组中,所以在这种情况下$foodArray。但是我不知道如何使用类函数的getter setter方法通过数组输入值。我还没有完全理解 PHP 的术语,所以如果我让它变得更加混乱,我深表歉意!
猜你喜欢
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
相关资源
最近更新 更多