Foreach对象与一个元素PHP


Foreach Object with one element PHP

我有一个名为$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)将是一个很好的解决方案。