亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

php通過前序遍歷樹實現無需遞歸的無限極分類

2024-04-25 20:38:49
字體:
來源:轉載
供稿:網友

本文實例講述了php通過前序遍歷樹實現無需遞歸的無限極分類。分享給大家供大家參考。具體如下:

大家通常都是使用遞歸實現無限極分類都知道遞歸效率很低,下面介紹一種改進的前序遍歷樹算法,不適用遞歸實現無限極分類,在大數據量實現樹狀層級結構的時候效率更高。

sql代碼如下:

CREATE TABLE IF NOT EXISTS `category` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(50) NOT NULL,

`lft` int(11) NOT NULL,

`rgt` int(11) NOT NULL,

`order` int(11) NOT NULL COMMENT '排序',

`create_time` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;

--

-- 轉存表中的數據 `category`

--

INSERT INTO `category` (`id`, `title`, `lft`, `rgt`, `order`, `create_time`) VALUES

(1, '頂級欄目', 1, 20, 1, 1261964806),

(2, '編輯后的分類', 16, 19, 50, 1264586212),

(4, '公司產品', 10, 15, 50, 1264586249),

(5, '榮譽資質', 8, 9, 50, 1264586270),

(6, '資料下載', 6, 7, 50, 1264586295),

(7, '人才招聘', 4, 5, 50, 1264586314),

(8, '留言板', 2, 3, 50, 1264586884),

(9, '總裁', 17, 18, 50, 1267771951),

(10, '新的分類的子分類', 11, 14, 0, 1400044841),

(11, 'PHP點點通-http://www.phpddt.com', 12, 13, 0, 1400044901);

php代碼如下:

<?php

/**

* 純屬測試

*

* @author Mckee

* @link http://www.phpddt.com

*/

class Category extends CI_Controller {

public function __construct()

{

parent::__construct();

$this->load->database();

}

public function view()

{

$lists = $this->db->order_by('lft', 'asc')->get('category')->result_array();

//相鄰的兩條記錄的右值第一條的右值比第二條的大那么就是他的父類

//我們用一個數組來存儲上一條記錄的右值,再把它和本條記錄的右值比較,如果前者比后者小,說明不是父子關系,就用array_pop彈出數組,否則就保留

//兩個循環而已,沒有遞歸

$parent = array();

$arr_list = array();

foreach($lists as $item){

if(count($parent)){

while (count($parent) -1 > 0 && $parent[count($parent) -1]['rgt'] < $item['rgt']){

array_pop($parent);

}

}

$item['depath'] = count($parent);

$parent[] = $item;

$arr_list[]= $item;

}

//顯示樹狀結構

foreach($arr_list as $a)

{

echo str_repeat('--', $a['depath']) . $a['title'] . '<br />';

}

}

/**

*

* 插入操作很簡單找到其父節點,之后把左值和右值大于父節點左值的節點的左右值加上2,之后再插入本節點,左右值分別為父節點左值加一和加二

*/

public function add()

{

//獲取到父級分類的id

$parent_id = 10;

$parent_category = $this->db->where('id', $parent_id)->get('category')->row_array();

//1.左值和右值大于父節點左值的節點的左右值加上2

$this->db->set('lft', 'lft + 2', FALSE)->where(array('lft >' => $parent_category['lft']))->update('category');

$this->db->set('rgt', 'rgt + 2', FALSE)->where(array('rgt >' => $parent_category['lft']))->update('category');

//2.插入新的節點

$this->db->insert('category', array(

'title' => '新的分類的子分類',

'lft' => $parent_category['lft'] + 1,

'rgt' => $parent_category['lft'] + 2,

'order' => 0,

'create_time' => time()

));

echo 'add success';

}

/**

* 刪除

*

* //1.得到刪除的節點,將右值減去左值然后加1,得到值$width = $rgt - $lft + 1;

* //2.刪除左右值之間的所有節點

* //3.修改條件為大于本節點右值的所有節點,操作為把他們的左右值都減去$width

*/

public function delete()

{

//通過分類id獲取分類

$id = 3;

$category = $this->db->where('id', $id)->get('category')->row_array();

//計算$width

$width = $category['rgt'] - $category['lft'] + 1;

//1.刪除該條分類

$this->db->delete('category', array('id' => $id));

//2.刪除左右值之間的所有分類

$this->db->delete('category', array('lft >' => $category['lft'], 'lft <' => $category['rgt']));

//3.修改其它節點的值

$this->db->set('lft', "lft - {$width}", FALSE)->where(array('lft >' => $category['rgt']))->update('category');

$this->db->set('rgt', "rgt - {$width}", FALSE)->where(array('rgt >' => $category['rgt']))->update('category');

echo 'delete success';

}

//編輯,

public function edit()

{

//不用說了, 直接通過id編輯

$id = 2;

$this->db->update('category', array(

'title' => '編輯后的分類'

), array(

'id' => $id

));

echo 'edit success';

}

}

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区深夜视频| 中文字幕日韩在线视频| 欧美激情一区二区三区在线视频观看| 欧美—级高清免费播放| 岛国av一区二区在线在线观看| 亚洲人成啪啪网站| 91精品视频免费看| 亚洲国产欧美在线成人app| 91日本在线视频| 91精品免费久久久久久久久| 日韩精品视频三区| 国产精品永久免费视频| 成人精品在线观看| 日韩电影免费在线观看| 久久久久女教师免费一区| 亚洲人成亚洲人成在线观看| 国产99久久久欧美黑人| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲国产精品热久久| 亚洲国产欧美一区二区三区同亚洲| 欧美日韩精品在线| 亚洲最大成人在线| 精品久久久香蕉免费精品视频| 91精品国产综合久久香蕉的用户体验| 国产成人精品视频在线| 亚洲精品黄网在线观看| 中文字幕亚洲欧美| 91精品国产91久久久久福利| 亚洲欧洲在线免费| 91精品视频一区| 日韩av一区在线| 亚洲高清色综合| 国产精品成人av在线| 亚洲精品www久久久久久广东| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲美女福利视频网站| 欧美视频精品一区| 欧美日韩中文在线观看| 亚洲视频网站在线观看| 亚洲欧美日韩另类| 久久夜色精品亚洲噜噜国产mv| 精品香蕉在线观看视频一| 亚洲一区二区三区xxx视频| 国产三级精品网站| 国产成人一区二区三区小说| 欧美中文字幕在线| 国产欧美日韩中文| 亚洲成在人线av| 久久韩国免费视频| 最新中文字幕亚洲| 亚洲欧洲中文天堂| 国产成人午夜视频网址| 国产一区二区三区免费视频| 激情懂色av一区av二区av| 亚洲视频999| 久久高清视频免费| 国产精品福利网站| 深夜成人在线观看| 欧美精品成人91久久久久久久| 日韩电影免费在线观看| 亚洲视频在线观看免费| 欧美精品www在线观看| 日本不卡视频在线播放| 黑人极品videos精品欧美裸| 欧美精品久久久久久久久久| 日韩中文字幕不卡视频| 98视频在线噜噜噜国产| 中文字幕欧美精品在线| 欧美激情免费看| 一区二区欧美激情| 久久这里有精品| 国产一区二区三区免费视频| 精品福利樱桃av导航| 91国产中文字幕| 国产精品69精品一区二区三区| 日本成人黄色片| 伊人成人开心激情综合网| 亚洲精品中文字幕女同| 精品国产老师黑色丝袜高跟鞋| 人九九综合九九宗合| 51色欧美片视频在线观看| 欧美亚洲成人xxx| 亚洲免费影视第一页| 亚洲人成自拍网站| 精品亚洲精品福利线在观看| 久久久久久美女| 国产精品一区二区av影院萌芽| 日韩久久精品成人| 日韩av片免费在线观看| 日本国产一区二区三区| 亚洲成人999| 精品亚洲精品福利线在观看| 亚洲欧美一区二区三区在线| 欧美午夜www高清视频| 欧美激情videos| 精品国产老师黑色丝袜高跟鞋| 国产亚洲成av人片在线观看桃| 欧美性猛交xxxx黑人| 欧美自拍大量在线观看| 成人字幕网zmw| 在线色欧美三级视频| 欧美第一淫aaasss性| 亚洲午夜精品久久久久久性色| 欧美日韩在线视频观看| 欧美性精品220| 欧美大片在线免费观看| 亚洲精品720p| 中文字幕在线日韩| 国产精品对白刺激| 91精品视频免费观看| 久久精品国产2020观看福利| 日韩在线精品视频| 国产成人福利视频| 欧美成年人视频网站| 欧美日韩国产一区二区三区| 欧美日韩国产黄| 91av视频在线播放| 伊是香蕉大人久久| 成人欧美一区二区三区在线湿哒哒| 在线播放国产一区中文字幕剧情欧美| 久久99青青精品免费观看| 国产精品久久久久久影视| 欧美在线视频一区| 色偷偷偷亚洲综合网另类| 成人免费视频97| 国产欧美一区二区白浆黑人| 欧美一区二区三区免费观看| 久久久精品免费| 欧美与黑人午夜性猛交久久久| 欧美成人中文字幕| 亚洲欧美在线磁力| 96精品久久久久中文字幕| 亚洲影视九九影院在线观看| 日韩av综合中文字幕| www日韩中文字幕在线看| 欧美成人中文字幕在线| 国产精品欧美激情在线播放| 日韩成人久久久| 一区二区三区四区精品| 国产性猛交xxxx免费看久久| 九九热这里只有在线精品视| 岛国视频午夜一区免费在线观看| 日韩成人av网| 亚洲加勒比久久88色综合| 欧美孕妇孕交黑巨大网站| 欧美老女人xx| 国产精品电影在线观看| 日韩三级影视基地| 亚洲天堂第二页| 国产精品狠色婷| 一夜七次郎国产精品亚洲| 欧美成人全部免费| 国产日韩精品在线| 日韩网站免费观看高清| 欧美日韩亚洲91| 国内精品视频久久| 欧美成人三级视频网站| 欧美贵妇videos办公室| 国模精品视频一区二区| 成人在线观看视频网站| 欧美日韩国产一区二区| 亚洲第一福利视频| 国产精品91在线观看| 国产精品69av|