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

首頁 > 開發 > PHP > 正文

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

2024-05-04 23:37:40
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了php通過前序遍歷樹實現無需遞歸的無限極分類,涉及基于CI框架針對數據庫的查詢與遍歷操作,具有一定參考借鑒價值,需要的朋友可以參考下

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

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

sql代碼如下:

 

 
  1. CREATE TABLE IF NOT EXISTS `category` ( 
  2. `id` int(11) NOT NULL AUTO_INCREMENT, 
  3. `title` varchar(50) NOT NULL, 
  4. `lft` int(11) NOT NULL, 
  5. `rgt` int(11) NOT NULL, 
  6. `order` int(11) NOT NULL COMMENT '排序'
  7. `create_time` int(11) NOT NULL, 
  8. PRIMARY KEY (`id`) 
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ; 
  10. -- 
  11. -- 轉存表中的數據 `category` 
  12. -- 
  13. INSERT INTO `category` (`id`, `title`, `lft`, `rgt`, `order`, `create_time`) VALUES 
  14. (1, '頂級欄目', 1, 20, 1, 1261964806), 
  15. (2, '編輯后的分類', 16, 19, 50, 1264586212), 
  16. (4, '公司產品', 10, 15, 50, 1264586249), 
  17. (5, '榮譽資質', 8, 9, 50, 1264586270), 
  18. (6, '資料下載', 6, 7, 50, 1264586295), 
  19. (7, '人才招聘', 4, 5, 50, 1264586314), 
  20. (8, '留言板', 2, 3, 50, 1264586884), 
  21. (9, '總裁', 17, 18, 50, 1267771951), 
  22. (10, '新的分類的子分類', 11, 14, 0, 1400044841), 
  23. (11, 'PHP點點通-http://www.phpddt.com', 12, 13, 0, 1400044901); 

php代碼如下:

 

 
  1. <?php 
  2. /** 
  3. * 純屬測試 
  4.  
  5. * @author Mckee 
  6. * @link http://www.phpddt.com 
  7. */ 
  8. class Category extends CI_Controller { 
  9. public function __construct() 
  10. parent::__construct(); 
  11. $this->load->database(); 
  12. public function view() 
  13. $lists = $this->db->order_by('lft''asc')->get('category')->result_array(); 
  14. //相鄰的兩條記錄的右值第一條的右值比第二條的大那么就是他的父類 
  15. //我們用一個數組來存儲上一條記錄的右值,再把它和本條記錄的右值比較,如果前者比后者小,說明不是父子關系,就用array_pop彈出數組,否則就保留 
  16. //兩個循環而已,沒有遞歸 
  17. $parent = array(); 
  18. $arr_list = array(); 
  19. foreach($lists as $item){ 
  20. if(count($parent)){ 
  21. while (count($parent) -1 > 0 && $parent[count($parent) -1]['rgt'] < $item['rgt']){ 
  22. array_pop($parent); 
  23. }  
  24. $item['depath'] = count($parent); 
  25. $parent[] = $item; 
  26. $arr_list[]= $item; 
  27. //顯示樹狀結構 
  28. foreach($arr_list as $a) 
  29. echo str_repeat('--', $a['depath']) . $a['title'] . '<br />'
  30. /** 
  31.  
  32. * 插入操作很簡單找到其父節點,之后把左值和右值大于父節點左值的節點的左右值加上2,之后再插入本節點,左右值分別為父節點左值加一和加二 
  33. */ 
  34. public function add() 
  35. //獲取到父級分類的id 
  36. $parent_id = 10; 
  37. $parent_category = $this->db->where('id', $parent_id)->get('category')->row_array(); 
  38. //1.左值和右值大于父節點左值的節點的左右值加上2 
  39. $this->db->set('lft''lft + 2', FALSE)->where(array('lft >' => $parent_category['lft']))->update('category'); 
  40. $this->db->set('rgt''rgt + 2', FALSE)->where(array('rgt >' => $parent_category['lft']))->update('category'); 
  41. //2.插入新的節點 
  42. $this->db->insert('category', array( 
  43. 'title' => '新的分類的子分類'
  44. 'lft' => $parent_category['lft'] + 1, 
  45. 'rgt' => $parent_category['lft'] + 2, 
  46. 'order' => 0, 
  47. 'create_time' => time() 
  48. )); 
  49. echo 'add success'
  50. /** 
  51. * 刪除 
  52.  
  53. * //1.得到刪除的節點,將右值減去左值然后加1,得到值$width = $rgt - $lft + 1; 
  54. * //2.刪除左右值之間的所有節點 
  55. * //3.修改條件為大于本節點右值的所有節點,操作為把他們的左右值都減去$width 
  56. */ 
  57. public function delete() 
  58. //通過分類id獲取分類 
  59. $id = 3; 
  60. $category = $this->db->where('id', $id)->get('category')->row_array(); 
  61. //計算$width 
  62. $width = $category['rgt'] - $category['lft'] + 1; 
  63. //1.刪除該條分類 
  64. $this->db->delete('category', array('id' => $id)); 
  65. //2.刪除左右值之間的所有分類 
  66. $this->db->delete('category', array('lft >' => $category['lft'], 'lft <' => $category['rgt'])); 
  67. //3.修改其它節點的值 
  68. $this->db->set('lft'"lft - {$width}", FALSE)->where(array('lft >' => $category['rgt']))->update('category'); 
  69. $this->db->set('rgt'"rgt - {$width}", FALSE)->where(array('rgt >' => $category['rgt']))->update('category'); 
  70. echo 'delete success'
  71. //編輯, 
  72. public function edit() 
  73. //不用說了, 直接通過id編輯 
  74. $id = 2; 
  75. $this->db->update('category', array( 
  76. 'title' => '編輯后的分類' 
  77. ), array( 
  78. 'id' => $id 
  79. )); 
  80. echo 'edit success'

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久久久久亚洲| 日韩中文在线中文网三级| 91在线观看免费| 国产精品免费电影| 亚洲欧美日韩国产精品| 久久久久久午夜| 欧美成人全部免费| 久久精品国产亚洲精品2020| 国产日韩欧美另类| 国产精品免费一区二区三区都可以| 精品久久久久久电影| 亚洲欧洲一区二区三区在线观看| 91久久久久久久久久久| 国产日韩欧美夫妻视频在线观看| 黑人巨大精品欧美一区二区一视频| 91精品国产高清久久久久久91| 国内精品久久久| 久久精品国产96久久久香蕉| 欧美性视频在线| 亚洲精品久久久久久久久久久久| 成人精品视频99在线观看免费| 日韩电影在线观看免费| 国产一区av在线| 成人激情春色网| 国产精品第二页| 欧美性猛交xxxx乱大交3| 欧美成人免费小视频| 亚洲成人网在线观看| 国产美女精品视频免费观看| 欧美性猛交xxxx富婆弯腰| 日韩av在线免费| 欧美激情综合亚洲一二区| 亚洲四色影视在线观看| 精品亚洲夜色av98在线观看| 国产69精品久久久久99| 精品一区二区三区四区| 欧美电影在线免费观看网站| 久久资源免费视频| 亚洲第一页自拍| 亚洲网站视频福利| 欧洲成人性视频| 4438全国成人免费| 在线观看亚洲视频| 成人激情视频小说免费下载| 日韩网站免费观看高清| 成人激情视频免费在线| 日韩经典第一页| 国产大片精品免费永久看nba| www国产亚洲精品久久网站| 精品无人区太爽高潮在线播放| 精品中文字幕久久久久久| 78m国产成人精品视频| 国内精品久久久久久久| 欧美色播在线播放| 国产精品久久精品| 色综合91久久精品中文字幕| 亚洲成人1234| 亚洲性夜色噜噜噜7777| 国产精品99蜜臀久久不卡二区| 成人做爽爽免费视频| 亚洲图片欧美日产| 福利视频导航一区| 欧美激情久久久| 久久69精品久久久久久国产越南| 欧美另类极品videosbest最新版本| 久久在精品线影院精品国产| 尤物yw午夜国产精品视频明星| 久久99亚洲精品| 欧美巨乳美女视频| 按摩亚洲人久久| 色噜噜狠狠色综合网图区| 欧美福利在线观看| 日韩免费观看在线观看| 亚洲国产精品系列| 国产精品h片在线播放| 亚洲天堂开心观看| 日韩av资源在线播放| 久久精品99久久香蕉国产色戒| 欧美黑人xxxⅹ高潮交| 欧美精品少妇videofree| 亚洲国产天堂久久综合| 国产精品视频网站| 成人高清视频观看www| 久久精视频免费在线久久完整在线看| 成人福利网站在线观看11| 国产精品久久久久久av下载红粉| 国产日韩欧美黄色| 久久精品国产综合| 国产一区二区在线播放| 久久免费观看视频| 欧美在线视频在线播放完整版免费观看| 国产精品视频网| 国产亚洲欧美一区| 亚洲国产古装精品网站| 中文字幕欧美精品在线| 中文字幕日韩有码| 国产精品久久久久久影视| 国产精品在线看| 成人有码在线视频| 亚洲国产精品国自产拍av秋霞| 中日韩美女免费视频网站在线观看| 国产精品久久一区| 久久精品99久久香蕉国产色戒| 97超碰国产精品女人人人爽| 欧美极品少妇xxxxⅹ免费视频| 亚洲欧美成人在线| 久久综合伊人77777尤物| 国产成人中文字幕| 在线播放国产一区二区三区| 亚洲精品久久久一区二区三区| 国产伦精品一区二区三区精品视频| 国产欧美精品一区二区| 91中文在线观看| 精品久久久久久中文字幕大豆网| xxxxx成人.com| 91久久精品国产91久久| www.国产精品一二区| 亚洲欧美国产日韩天堂区| 51ⅴ精品国产91久久久久久| 亚洲色无码播放| 91精品国产乱码久久久久久蜜臀| 亚洲国产91色在线| 日韩美女在线看| 国产一区二区激情| 久久影院模特热| 色综合久久久888| 91高清在线免费观看| 亚洲欧美日韩中文视频| 欧美专区日韩视频| 国语自产精品视频在线看| 欧美午夜性色大片在线观看| 欧美日韩电影在线观看| 国产精品人成电影在线观看| 最近2019好看的中文字幕免费| 蜜臀久久99精品久久久久久宅男| 亚洲国产高清高潮精品美女| 午夜精品一区二区三区在线| 色樱桃影院亚洲精品影院| 成人免费大片黄在线播放| 亚洲精品丝袜日韩| 国产精品美女主播| 中文字幕亚洲色图| 一区三区二区视频| 日本免费一区二区三区视频观看| 欧美一二三视频| 欧美在线视频播放| 日本精品免费观看| 国产视频在线观看一区二区| 免费成人高清视频| 91免费福利视频| 在线播放日韩专区| 亚洲精品中文字幕女同| 97精品视频在线观看| 韩国精品美女www爽爽爽视频| 日韩精品黄色网| 亚洲自拍小视频| 国产亚洲一区二区精品| 日本欧美爱爱爱| 亚洲国产私拍精品国模在线观看| 国产亚洲人成a一在线v站| 国产91露脸中文字幕在线| 黑人与娇小精品av专区| 一本色道久久88精品综合| 久久精品视频va|