《PHP實戰:深入淺析PHP無限極分類的案例教程》要點:
本文介紹了PHP實戰:深入淺析PHP無限極分類的案例教程,希望對您有用。如果有疑問,可以聯系我們。
平時開發中或多或少不可避免會遇到無限極分類的問題,因為效率、邏輯等問題也一直使這類問題比較尖銳.今天我們以yii2框架為基礎,欄目無限極為例,對這個問題進行一個簡單的處理.PHP實例
首先我們有一張欄目數據表 treePHP實例
表結構如下圖(原文有圖)PHP實例
PHP實例
看上去表結構很簡單.PHP實例
我們插入幾條測試數據PHP實例
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');
樹形結構大致如下PHP實例
|A
|--a
|----aa
|------aaa
|B
|--bPHP實例
這也正是我們所需要的數據結構形式,下面我們來看看如何處理才能夠得到所需要的結果.PHP實例
我們前面也說了,以yii2為基礎,因此我們的寫法也依照面向對象的規則來PHP實例
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實例
關于PHP無限極分類的案例教程就給大家介紹這么多,希望對大家有所贊助!PHP實例
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/6752.html