有人可以帮我弄清楚我在这里做错了什么。基本上,此脚本循环查询查询中的$ reply并向对象添加值。但是,它覆盖了 - >回复了最后一个。
$store->{$f->id}->replies = $store->{$f->id}->replies ?? (object)[];
$store->{$f->id}->replies->{$reply->id} = $reply;
如果要循环回复3次,则应存储:
$store->{$f->id}->replies->one = 'reply 1';
$store->{$f->id}->replies->two = 'reply 2';
$store->{$f->id}->replies->three = 'reply 3';
相反,它只存储第三个:
$store->{$f->id}->replies->three
以下是循环的完整代码:
while($f = $q->fetch()) {
$reply = static::chatter_message_format($f);
$store->{$f->id} = $f;
//If checking for posts from friends, user_id will be array
if(is_array($user_id)) {
if($reply) {
$store->{$f->id}->replies = $store->{$f->id}->replies ?? (object)[];
$store->{$f->id}->replies->{$reply->id} = $reply;
}
}
}
如果我在循环中回显$ reply,我会看到每个回复。 $ store正被写入缓存文件,但似乎只保存每个帖子的最后一个回复。
我主要在python中编码,但是在PHP中继承了这个项目 - 很多都是我的头脑,但我正在迅速学习:)我将尽快使用API-first方法重建这个但是试图挽救我的东西可以用于原型。
答案 0 :(得分:0)
if(is_array($user_id)) {
if(!isset($store->{$f->id})) {
$store->{$f->id} = $f; //Was creating a new object here before the isset check.
}
if($reply) {
$store->{$f->id}->replies = $store->{$f->id}->replies ?? (object)[];
$store->{$f->id}->replies->{$reply->id} = $reply;
}