我有一个名为$people
的对象。它是由我的数据库填充的。这个对象看起来像这样:
Array
(
[0] => stdClass Object
(
[id] => 21
[fname] => Billy
[lname] => Boemba
[email] => email@example.com
[country] => The Netherlands
)
[1] => stdClass Object
(
[id] => 22
[fname] => Jill
[lname] => Jimba
[email] => email@example.com
[country] => Austria
)
我的额头是这样的:
foreach($people as $person){
// echo some stuff about the person
}
所有这些都有效,但是当我在数据库中有一个记录时,所以$people
只有一个元素,当我尝试使用foreach()
时,我得到了一个错误:Notice: Trying to get property of non-object
那么我如何使用foreach()
函数与一个元素在我的对象?
Foreach可以在一个元素数组上运行。我想,你的脚本的某些部分简单不返回数组时,只有一个元素,这就是为什么你有问题与foreach
当我没有适当的错误检查时,我得到了同样的错误,我正在将一个布尔值传递到foreach循环中:
if (!$sth = $this->database->query($query)) {
print_r($this->database->errorInfo());
}
if(!$record = $sth->fetch(PDO::FETCH_ASSOC)){
die('record not found');
}else{
return $record;
}
因为$people
是一个对象而不是数组。使用var_dump($people),您会发现$people是一个对象。如果$people包含多个对象,使用var_dump($people)时,您会发现$people是一个数组。
函数foreach只作用于数组对象。
is_array($people)将是一个很好的解决方案。