談一次php無限極分類的案例 php無限極分類顯示 php無限極分類下拉框 php無限極分類函

來源:互聯網
上載者:User
作者:白狼 出處:http://www.manks.top/php_tree_deep.html 本文著作權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。原文有圖片。

平時開發中或多或少不可避免會遇到無限極分類的問題,因為效率、邏輯等問題也一直使這類問題比較尖銳。今天我們以yii2架構為基礎,欄目無限極為例,對這個問題進行一個簡單的處理。

首先我們有一張欄目資料表 tree

表結構如(原文有圖)

看上去表結構很簡單。

我們插入幾條測試資料

INSERT INTO `tree` (`id`, `parent_id`, `name`) VALUES (1, 0, 'A'), (2, 0, 'B'), (3, 1, 'a'), (4, 3, 'aa'), (5, 2, 'b'), (6, 4, 'aaa');

樹形結構大致如下

|A |--a |----aa |------aaa |B |--b

這也正是我們所需要的資料結構形式,下面我們來看看如何處理才能夠得到所需要的結果。

我們前面也說了,以yii2為基礎,因此我們的寫法也按照物件導向的規則來

class tree {     //訪問index查看樹形結構     public function actionIndex () {         $data = self::getTree();         //為了方便測試,我們這裡以json格式輸出         \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;         return $data;     }     //擷取樹     public static function getTree () {         //這裡我們直接擷取所有的資料,然後通過程式進行處理         //在無限極分類中最忌諱的是對資料庫進行層層操作,也就很容易造成記憶體溢出         //最後電腦死機的結果         $data = static::find()->all();         return self::_generateTree($data);     }     //產生樹     private static function _generateTree ($data, $pid = 0) {         $tree = [];         if ($data && is_array($data)) {             foreach($data as $v) {                 if($v['parent_id'] == $pid) {                     $tree[] = [                         'id' => $v['id'],                         'name' => $v['name'],                         'parent_id' => $v['parent_id'],                         'children' => self::_generateTree($data, $v['id']),                     ];                 }             }         }         return $tree;     } }

我們訪問下tree/index看看,如下

這樣我們可以看到一個很清晰的樹形結構圖,也就是我們最終所需要的。

以上就介紹了談一次php無限極分類的案例,包括了php,無限極方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.