显示带有对象的数组的具体数据

时间:2019-02-10 12:04:31

标签: php

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

当试图找到学生时,出现以下错误:

  

致命错误:未捕获错误:不能将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() . " ";
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在错误状态下,可以将对象用作数组。在$this->students中,每个对象的类型均为object(Student),因此您可以使用“键”索引访问名称字段。您需要将以下内容更改为:if($value["name"] == $name){(因为$value["name"]是对象,因此无法使用$value

if($value->getName() == $name){

答案 1 :(得分:0)

学生是对象的数组,所以值是一个对象,所以$value->name;是您访问名称属性的方式

   foreach($this->students as $key=>$value){
     if($name==$value->name){
      //print the attributes...  
     }
   }

最好将两个值都小写然后进行比较,以便即使输入大写字母也可以找到结果