php关联对象数组

时间:2012-09-05 13:25:15

标签: php class object associative-array

我正在尝试从行结果集创建对象的关联数组,并将成员ID作为键,但是会出现一些错误。

addATravelog()只是UserLogsAndSOS()类的一个函数,它的对象我想要数组。

以下是我的尝试:

class UserArraySet {

private $arrayOfUsers = array();    

function createArrayForTravelogs($result) {
    While($row = $result->next()) {
        if(array_key_exists($row['id'], $this->arrayOfUsers)) {
            $this->arrayOfUsers[$row['id']] = new UserLogsAndSOS();
        }
    $this->arrayOfUsers[$row['id']]->addATravelog($row['title'], $row['blog']); //line     72                                           
    }
}
}

从对象调用createArrayForTravelogs()时出现以下错误 这是我得到的错误:

Notice: Undefined index: 1 in C:\xampp\htdocs\site\classes\userprofile.php on line 72

Fatal error: Call to a member function addATravelog() on a non-object in C:\xampp\htdocs\site\classes\userprofile.php on line 72

有人可以告诉我如何实现这一点,我想要这样的事情:

Array (

 [1] => objectUserLogsAndSOS1

 [5] => objectUserLogsAndSOS2
 ....
)

其中key是$ row的成员ID。 我还需要检查密钥是否存在,然后调用该特定对象的函数将数据添加到其成员,如果没有则创建一个对象,然后调用该特定对象的函数将数据添加到其成员。

由于

3 个答案:

答案 0 :(得分:2)

只是阅读错误消息:如果已有条目,则只创建UserLogsAndSOS - 否则在null上调用addATravelog。 也许你忘记了“!”在你的if子句中?

答案 1 :(得分:1)

因为数组保持空白。

只有在UserLogsAndSOS中已存在具有提供ID的元素时,才会创建新的arrayOfUsers。与您可能想要的完全相反。

您可能错过了!来反转array_key_exist结果。

答案 2 :(得分:0)

if(!array_key_exists($row['id'], $this->arrayOfUsers)) {
   $this->arrayOfUsers[$row['id']] = new UserLogsAndSOS();
}
  

你错过了'!'我认为这会导致错误