我有一个名为$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是这样的:
foreach($people as $person){
// echo some stuff about the person
}
这一切都有效,但是当我的数据库中有一条记录时,$people
只有一个元素,当我尝试使用foreach()
时出现错误:
Notice: Trying to get property of non-object
那么如何在我的对象中使用foreach()
函数和一个元素呢?
答案 0 :(得分:0)
Foreach可以在一个元素数组上运行。我想你的脚本的某些部分很简单,当只有一个元素时,它不会返回数组,这就是为什么你遇到foreach问题
答案 1 :(得分:0)
当我没有正确的错误检查并且我将一个布尔值传递给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;
}
答案 2 :(得分:0)
因为$people
是一个对象而不是一个数组。使用var_dump($ people),你会发现$ people是一个对象。如果$ people包含多个对象,则在使用var_dump($ people)时会发现$ people是一个数组。
函数foreach只对数组对象起作用。所以出了问题。
is_array($ people)将是一个很好的解决方案。