我想显示数组的特定数据,我有以下代码,并且我试图打印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() . " ";
}
}
}
答案 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...
}
}
最好将两个值都小写然后进行比较,以便即使输入大写字母也可以找到结果