使用一个元素PHP的Foreach对象

时间:2014-05-08 19:52:11

标签: php object foreach

我有一个名为$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()函数和一个元素呢?

3 个答案:

答案 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)将是一个很好的解决方案。