Php 为什么我不能在代码中访问对象的属性?
我正在做我的作业,你最多输入3次长度和宽度,并比较哪一次最大 作业要求我有3个dfierent php文件。第一个用于main(输入和输出),第二个(rectangle.php)用于获取面积、对角线、周长和宽度,最后一个(rectanglecompare.php文件)用于比较哪些输入数据的结果最大 下面是为main.php上编写的类“Rectangle”创建数组对象的步骤Php 为什么我不能在代码中访问对象的属性?,php,html,arrays,loops,object,Php,Html,Arrays,Loops,Object,我正在做我的作业,你最多输入3次长度和宽度,并比较哪一次最大 作业要求我有3个dfierent php文件。第一个用于main(输入和输出),第二个(rectangle.php)用于获取面积、对角线、周长和宽度,最后一个(rectanglecompare.php文件)用于比较哪些输入数据的结果最大 下面是为main.php上编写的类“Rectangle”创建数组对象的步骤 $ArRec = array(); for ($i=0; $i<count($_REQUEST["length"]);
$ArRec = array();
for ($i=0; $i<count($_REQUEST["length"]); $i++){
$length = $_REQUEST ["length"][$i];
$width = $_REQUEST ["width"][$i];
$ArRec[$i]=new Rectangle($length, $width);
}
//op是输入类型“chekbox”的名称
$op=$\u请求['op'];
$out=“”;
对于($i=0;$ilargestArea();
foreach($resObj作为$value){
$out=$out。
“长度:$value->getLength\n”。
“宽度:$value->getWidth()\n”。
“区域:$value->findArea()\n\n”;
}
//$resObj=$compareObj->largestrea();类“compare”中的属性“largestrea”返回数组变量“$ArRes”,其中$ArRes[]=$this->ArRec[x]x是计算出的最大面积的索引号
错误是
注意:未定义的属性:Rectangle::$getLength,位于C:\xampp\htdocs\as8\man.php的第56行
注意:未定义的属性:矩形::$getWidth,位于第57行的C:\xampp\htdocs\as8\man.php中
注意:第58行C:\xampp\htdocs\as8\man.php中的未定义属性:矩形::$findArea
我为我的写作和编码中出现的任何或许多困惑表示歉意,但我试图尽可能地让它了解情况。我尝试了许多不同的方法来实现这一点,但我已经绝望地寻求帮助。我对编码非常熟悉,甚至在彻底搜索w3schools和php.net寻求帮助后也很难找到帮助
这是我的类“矩形”的简短版本
<?php
class Rectangle{
private $length;
private $width;
public function __construct ($length, $width){
$this->length = $length;
$this->width = $width;
}
public function findArea(){
$area = $this->length * $this->width;
return $area;
}
public function getLength(){
return $this->length;
}
public function getWidth(){
return $this->width;
}
}
对此表示抱歉。因此,第56-58行分别是“长度:$value->getLength\n”,“宽度:$value->getWidth()\n”,“区域:$value->findArea()\n\n”;largestrea()返回$ArRes;$ArRes=$this->$ArRec[x];x是最大计算面积的ArRec的索引数。因此,$resObj指向$ArRes。所以我的假设是我们可以直接调用'getLength(),getWidth(),findArea()通过$resObj->getLength在类“rectangle”中创建。你的矩形对象代码是什么样子的?里面有那些函数吗?感谢你的关注。类“rectangle”确实有函数findArea、findPerim等。我刚刚在上面的帖子中重新编辑了。你试图从名为getLength的属性中获取值,但没有。Th有一个名为getLength的方法,您可以检索返回值,如$thing->getLength()(非常重要的括号!)
$op = $_REQUEST['op'];
$out="";
for ($i=0; $i<count($op);$i++){
switch($op[$i]){
case "LargestArea":
$resObj = $compareObj->largestArea();
foreach ($resObj as $value){
$out = $out .
"Length: $value->getLength\n" .
"Width: $value->getWidth()\n" .
"Area: $value->findArea()\n\n";
}
<?php
class Rectangle{
private $length;
private $width;
public function __construct ($length, $width){
$this->length = $length;
$this->width = $width;
}
public function findArea(){
$area = $this->length * $this->width;
return $area;
}
public function getLength(){
return $this->length;
}
public function getWidth(){
return $this->width;
}
}
$out="";
for ($i=0; $i<count($op);$i++){
switch($op[$i]){
case "LargestArea":
$resObj = $compareObj->largestArea();
$out = "Largest Area Rectangle(s)\n";
foreach ($resObj as $value){
//$value = $ArRec[x] = rectangle($length,$width)
$lengthy = $value->getLength();
$widthy = $value->getWidth();
$area = $value->findArea();
$out = $out .
"Length: $lengthy \n" .
"Width: $widthy \n" .
"Area $area \n\n";
}
break;
print <<< Here
<textarea rows="20", column="20">
$out
</textarea>
Here;