我有一個帖子的碰撞,我想在表中顯示。 每篇文章都有一個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如果您發佈的'$帖子一些樣本內容;',它會變得容易讓我們理解您的問題 –