我有一个帖子的碰撞,我想在表中显示。 每篇文章都有一个id和一个parent_id。php foreach在foreach
我想通过嵌套的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,标题和正文作为博客文章的标题和正文,compact是用于url的简短名称,是用于告知帖子正躺在谁的父ID,即。我是我父母的孩子。
由于用户应该有所有可能性来移动帖子并将帖子放在菜单中,所以将顶级帖子视为菜单项,并且将父级视为子菜单项。
'$ childPost','$ allPosts'包含什么?关系是什么? –
$ allPosts = $帖子,只是为了使变量不同,即使它是相同的帖子。 的childpost(其中doesn't必须是childpost除非其PARENT_ID == current_id),是后我得到的每一个的只是名字。 每个帖子包含姓名,身份证,PARENT_ID,内容,URL以及其他次要的东西。把它看作是一篇博客文章。这有道理吗? – Malin
@Malin如果您发布的'$帖子一些样本内容;',它会变得容易让我们理解您的问题 –