php - 怎麼遞迴獲取文章所有的評論? ? ?
phpcn_u1582
phpcn_u1582 2017-06-30 09:53:28
0
1
940

表格結構:
comment_id 評論ID
arc_id 文章ID
content 內容
parent_id 評論父節點

想要遞迴得到這樣的資料結構:

$arr=array(

[0]=>array(
    comment_id=>1
    parent_id =>0
    ['child']=>array(
       [0]=>array(
            comment_id=>2
            parent_id =>1
         ) 
          
       [1]=>array(
            comment_id=>3
            parent_id =>2
         ) 
       [2]=>array(
            comment_id=>4
            parent_id =>1
         )   
        ........
    )
    
)

[1]=>array(
     comment_id=>5
     parent_id =>0
    ['child']=>array(
       [0]=>array(
            comment_id=>6
            parent_id =>5
         ) 
          
       [1]=>array(
            comment_id=>7
            parent_id =>5
         ) 
       [2]=>array(
            comment_id=>8
            parent_id =>7
         )   
        ........
    )
)

)

phpcn_u1582
phpcn_u1582

全部回覆(1)
学霸
  1. 先取出一個二維數組,其中每一項帶有comment_idparent_id字段

  2. 接著使用下面的函數,將上面的二維陣列轉成樹狀結構:

<?php
$arr = [
    ['comment_id' => 1, 'parent_id' => 0],
    ['comment_id' => 2, 'parent_id' => 0],
    ['comment_id' => 3, 'parent_id' => 2],
    ['comment_id' => 4, 'parent_id' => 1],
    ['comment_id' => 5, 'parent_id' => 4],
    ['comment_id' => 6, 'parent_id' => 4],
];

function getTree($arr = []) {
    $a = array_column($a, NULL, 'comment_id');
    $tree = [];

    foreach($a as $i => &$v) {
        if(isset($items[$item['parent_id']])){
            $items[$item['parent_id']]['children'][] = &$items[$item['comment_id']];
        } else {
            $tree[] = &$items[$item['id']];
        }
    }

    return $tree;
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板