2

我正在尝试从以成员 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。我还需要检查密钥是否存在,然后调用该特定对象的函数以将数据添加到其成员,如果不存在则创建一个对象,然后调用该特定对象的函数以将数据添加到其成员。

谢谢

4

3 回答 3

2

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

于 2012-09-05T13:28:59.030 回答
1

因为数组保持为空。

只有UserLogsAndSOSarrayOfUsers. 与您可能想要的完全相反。

您可能缺少 a!来反转array_key_exist结果。

于 2012-09-05T13:31:52.243 回答
0
if(!array_key_exists($row['id'], $this->arrayOfUsers)) {
   $this->arrayOfUsers[$row['id']] = new UserLogsAndSOS();
}

你错过了“!” 我认为这是导致错误

于 2012-09-05T13:30:53.880 回答