php遞歸生成無限極樹狀數(shù)組

在生成多級樹狀數(shù)組之前拌汇,我們一般得到的數(shù)據(jù)結構如下

[{
    "id": 6,
    "parent_id": 5,
    "name": "體育專題1",
    "intro": "體育專題1111介紹",
}, {
    "id": 5,
    "parent_id": 4,
    "name": "體育專題",
    "intro": "體育專題介紹",
}, {
    "id": 4,
    "parent_id": 0,
    "name": "體育",
    "intro": "體育所有區(qū)塊",
}, {
    "id": 3,
    "parent_id": 1,
    "name": "最視頻",
    "intro": "最視頻介紹",
}, {
    "id": 2,
    "parent_id": 1,
    "name": "輪播臺",
    "intro": "首頁輪播臺介紹",
}, {
    "id": 1,
    "parent_id": 0,
    "name": "首頁",
    "intro": "首頁的所有區(qū)塊",
}]

我們需要根據(jù)其中的pid(parent_id)與id之間的關系,來將數(shù)數(shù)組轉成多級數(shù)組
首先考慮,如果使用遞歸棵红,遞歸執(zhí)行的條件是什么?或者反過來說咧栗,遞歸返回的條件是什么逆甜?
假設我們用上述數(shù)據(jù)的第一個元素pid是5,繼續(xù)找到id為5的數(shù)據(jù)找到第二個元素致板,第二個元素pid為4交煞,繼續(xù)找id為4的元素,id為4的元素pid為0斟或,說明找到了最后
所以代碼如下

  $newData = $this->digui($data,0);
  function digui($arr, $pid = 0)
    {
        $newArr = [];
        foreach ($arr as $item) {
            if ($pid == $item['parent_id']) {
                $item['children'] = digui($arr, $item['id']);
                $newArr [] = $item;
            }

        }
        return $newArr;
    }

$newData = $this->digui($data,0);傳入的data的數(shù)據(jù)結構為開始時描述的數(shù)據(jù)結構素征。 `foreach`相當于用來遍歷每個data中的元素,而其中的遞歸相當于找出當前被遍歷元素的所有后代元素(包括兒子元素孫子元素)萝挤。所以最后我們得到的數(shù)據(jù)結構如下

[{
    "id": 4,
    "parent_id": 0,
    "name": "體育",
    "intro": "體育所有區(qū)塊",
    "created_at": 0,
    "updated_at": 0,
    "children": [{
        "id": 7,
        "parent_id": 4,
        "name": "體育專題2",
        "intro": "體育專題22222介紹",
        "created_at": 0,
        "updated_at": 0,
        "children": []
    }, {
        "id": 5,
        "parent_id": 4,
        "name": "體育專題1",
        "intro": "體育專題介紹",
        "created_at": 0,
        "updated_at": 0,
        "children": [{
            "id": 6,
            "parent_id": 5,
            "name": "體育專題1-1",
            "intro": "體育專題1111介紹",
            "created_at": 0,
            "updated_at": 0,
            "children": []
        }]
    }]
}, {
    "id": 1,
    "parent_id": 0,
    "name": "首頁",
    "intro": "首頁的所有區(qū)塊",
    "created_at": 0,
    "updated_at": 0,
    "children": [{
        "id": 3,
        "parent_id": 1,
        "name": "最視頻",
        "intro": "最視頻介紹",
        "created_at": 0,
        "updated_at": 0,
        "children": []
    }, {
        "id": 2,
        "parent_id": 1,
        "name": "輪播臺",
        "intro": "首頁輪播臺介紹",
        "created_at": 0,
        "updated_at": 0,
        "children": []
    }]
}]
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末御毅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子怜珍,更是在濱河造成了極大的恐慌端蛆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酥泛,死亡現(xiàn)場離奇詭異今豆,居然都是意外死亡嫌拣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門晚凿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亭罪,“玉大人,你說我怎么就攤上這事歼秽∮σ郏” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵燥筷,是天一觀的道長箩祥。 經(jīng)常有香客問我,道長肆氓,這世上最難降的妖魔是什么袍祖? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮谢揪,結果婚禮上蕉陋,老公的妹妹穿的比我還像新娘。我一直安慰自己拨扶,他們只是感情好凳鬓,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著患民,像睡著了一般缩举。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匹颤,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天仅孩,我揣著相機與錄音,去河邊找鬼印蓖。 笑死辽慕,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的另伍。 我是一名探鬼主播鼻百,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼摆尝!你這毒婦竟也來了?” 一聲冷哼從身側響起因悲,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤堕汞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后晃琳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讯检,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡琐鲁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了人灼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片围段。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖投放,靈堂內(nèi)的尸體忽然破棺而出奈泪,到底是詐尸還是另有隱情,我是刑警寧澤灸芳,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布涝桅,位于F島的核電站,受9級特大地震影響烙样,放射性物質(zhì)發(fā)生泄漏冯遂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一谒获、第九天 我趴在偏房一處隱蔽的房頂上張望蛤肌。 院中可真熱鬧,春花似錦批狱、人聲如沸裸准。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狼速。三九已至,卻和暖如春卦停,著一層夾襖步出監(jiān)牢的瞬間向胡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工惊完, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留僵芹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓小槐,卻偏偏與公主長得像拇派,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凿跳,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容