亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入淺析PHP無(wú)限極分類(lèi)的案例教程

 更新時(shí)間:2016年05月09日 09:03:33   作者:白狼  
平時(shí)開(kāi)發(fā)中或多或少不可避免會(huì)遇到無(wú)限極分類(lèi)的問(wèn)題,因?yàn)樾?、邏輯等?wèn)題也一直使這類(lèi)問(wèn)題比較尖銳。今天小編以yii2框架為基礎(chǔ),欄目無(wú)限級(jí)為例,給大家介紹php無(wú)限極分類(lèi)的相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧

平時(shí)開(kāi)發(fā)中或多或少不可避免會(huì)遇到無(wú)限極分類(lèi)的問(wèn)題,因?yàn)樾省⑦壿嫷葐?wèn)題也一直使這類(lèi)問(wèn)題比較尖銳。今天我們以yii2框架為基礎(chǔ),欄目無(wú)限極為例,對(duì)這個(gè)問(wèn)題進(jìn)行一個(gè)簡(jiǎn)單的處理。

首先我們有一張欄目數(shù)據(jù)表 tree

表結(jié)構(gòu)如下圖(原文有圖)

看上去表結(jié)構(gòu)很簡(jiǎn)單。

我們插入幾條測(cè)試數(shù)據(jù)

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');

樹(shù)形結(jié)構(gòu)大致如下

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

這也正是我們所需要的數(shù)據(jù)結(jié)構(gòu)形式,下面我們來(lái)看看如何處理才能夠得到所需要的結(jié)果。

我們前面也說(shuō)了,以yii2為基礎(chǔ),因此我們的寫(xiě)法也按照面向?qū)ο蟮囊?guī)則來(lái)

class tree { 
//訪問(wèn)index查看樹(shù)形結(jié)構(gòu) 
public function actionIndex () { 
$data = self::getTree(); 
//為了方便測(cè)試,我們這里以json格式輸出 
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
return $data; 
} 
//獲取樹(shù) 
public static function getTree () { 
//這里我們直接獲取所有的數(shù)據(jù),然后通過(guò)程序進(jìn)行處理 
//在無(wú)限極分類(lèi)中最忌諱的是對(duì)數(shù)據(jù)庫(kù)進(jìn)行層層操作,也就很容易造成內(nèi)存溢出 
//最后電腦死機(jī)的結(jié)果 
$data = static::find()->all(); 
return self::_generateTree($data); 
} 
//生成樹(shù) 
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; 
} 
}

我們?cè)L問(wèn)下tree/index看看,效果圖如下

這樣我們可以看到一個(gè)很清晰的樹(shù)形結(jié)構(gòu)圖,也就是我們最終所需要的。

關(guān)于PHP無(wú)限極分類(lèi)的案例教程就給大家介紹這么多,希望對(duì)大家有所幫助!

相關(guān)文章

最新評(píng)論