【问题标题】:php associative array of objectsphp关联对象数组
【发布时间】:2012-08-30 05:41:36
【问题描述】:

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

谢谢

【问题讨论】:

    标签: php class object associative-array


    【解决方案1】:

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

    【讨论】:

    • 糟糕!浪费了一整天,整天都在谷歌上搜索......谢谢德尔
    • 欢迎您,请将问题标记为已解决,祝您有愉快的一天
    【解决方案2】:
    if(!array_key_exists($row['id'], $this->arrayOfUsers)) {
       $this->arrayOfUsers[$row['id']] = new UserLogsAndSOS();
    }
    

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

    【讨论】:

      【解决方案3】:

      因为数组保持为空。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-24
        • 2011-05-19
        • 2011-01-04
        • 1970-01-01
        • 2015-05-12
        相关资源
        最近更新 更多