展示包含对象的数组的具体数据

12 浏览
0 Comments

展示包含对象的数组的具体数据

我想展示一个数组的特定数据,我有以下代码,并且我试图通过变量$name来指示打印printConcreteStudent函数中的特定学生。

当我尝试找到该学生时,我遇到以下错误:

致命错误:无法使用类型为Student的对象作为数组

数组的结构如下:

array(1) {
  [0]=>
  object(Student)#1 (4) {
    ["name"]=>
    string(5) "Student1"
    ["lastname":"Student":private]=>
    string(7) "lastName1"
  }
}

我正在尝试使用以下函数打印特定数据:

function printConcreteStudent($name) {
    foreach($this->students as $key=>$value){
        if($value["name"] == $name){
            echo $value->getName() . " ";
            echo $value->getLastName() . " ";
        }
    }
}

0
0 Comments

问题出现的原因是由于访问对象数组时,使用了错误的语法。解决方法是使用正确的语法来访问对象数组的属性。

具体来说,原始代码中使用了$value->name;来访问对象数组中的属性,这是错误的语法。应该使用$value->getName();来访问对象的属性。

另外,为了确保输入的大小写不影响结果,最好将两个值都转为小写进行比较。

此外,由于Student对象可能封装了私有成员,最好使用getter函数来访问该字段。

最后,需要注意的是,原始代码中的错误是因为将对象当作数组来访问。

0
0 Comments

问题出现的原因:

代码中使用了错误的语法来访问对象中的属性。在代码中,$value 是一个对象,而不是数组,因此无法使用$value["name"]来访问对象的属性。

解决方法:

改用正确的语法来访问对象中的属性。将if($value["name"] == $name){改为if($value->getName() == $name){,这样就可以通过调用对象的getName()方法来访问对象的名称属性。

0