我正在尝试从行结果集创建对象的关联数组,并将成员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。 我还需要检查密钥是否存在,然后调用该特定对象的函数将数据添加到其成员,如果没有则创建一个对象,然后调用该特定对象的函数将数据添加到其成员。
由于
答案 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();
}
你错过了'!'我认为这会导致错误