我有一些我想在表格中显示的帖子。每个帖子都有一个 id 和一个 parent_id。
我想用嵌套的 foreach 遍历表,但我没有让它工作。我的想法是遍历每个帖子,打印名称和内容,并找到它的所有孩子(通过遍历每个帖子并查看孩子的父 ID 是否等于我的 ID。)
我的代码是:
$allPosts = $posts;
foreach ($posts as $post) {
if ($post->parent_id == 0){ //0 means highest level, no parent
echo $post->name;
$current_id = $post->id;
foreach ($allPosts as $childPost){
if($childPost->parent_id == $current_id){
echo $cihldPost->name;
}
}
}
}
问题是,第一个循环只运行一次。如果我删除第二个 foreach 循环,第一个会正确运行。
为什么会发生这种情况,我该如何解决?
添加:帖子本身就像一篇博客文章,它包含以下内容:id、title、body、compact、parent_id。其中 id 是唯一的 id,title 和 body 作为博客文章的标题和正文,compact 作为用于 url 的短名称,一个父 id,用于告诉该文章位于谁之下,即。我是我父母的孩子。
由于用户应该有可能在帖子中移动并将帖子放在菜单中,因此可以将顶级帖子视为菜单项,而将父级帖子视为子菜单项。