国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP利用遞歸函數實現無限級分類的方法

2024-05-05 00:07:47
字體:
來源:轉載
供稿:網友

相信很多學php的很多小伙伴都會嘗試做一個網上商城作為提升自己技術的一種途徑。各種對商品分類,商品名之類的操作應該是得心應手,那么就可以嘗試下無限級分類列表的制作了。

什么是無限級分類?

無限級分類是一種分類技巧,例如部門組織,文章分類,學科分類等常用到無限級分類,將其簡單理解成分類就好了。其實我們仔細想一下,生活中的分類簡直太多了,衣服可以分為男裝和女裝,也可以分為上衣和褲子,也可以根據年齡段分類。分類無處不在,分類顯得“無限”。我這里就不說無限分類的必要性了。

無限級分類原理簡介

無限分類看似"高大上",實際上原理是非常簡單的 。無限分類不僅僅需要代碼的巧妙性,也要依托數據庫設計的合理性。要滿足無限級分類,數據庫需要有兩個必須的字段,id,pid。id用來標識自身,而pid則是用來表明父級id。也就是說,每個分類記錄不僅描述了自身,還描述了與其關心最為緊密的另一個id。看似復雜的事情被這樣一個小技巧解決了。

php無限級分類是經常要用到的,本人以前一直用的是已經寫好的,所以沒仔細去研究過,下面是一個使用遞歸實現的簡單的php無限級分類的函數;也許這不是最優的方法,但對于一般的應用也足夠了。

數據表結構

CREATE TABLE IF NOT EXISTS `category` ( `id` int(5) NOT NULL AUTO_INCREMENT COMMENT '唯一自增id', `pid` int(5) NOT NULL DEFAULT '0' COMMENT '父id', `sort` int(2) NOT NULL DEFAULT '0' COMMENT '排序數字', `name` varchar(30) DEFAULT NULL COMMENT '名稱', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='無限極分類表' AUTO_INCREMENT=1 ;

數據

INSERT INTO `category` (`id`, `pid`, `sort`, `name`) VALUES(1, 0, 1, 'php'),(2, 0, 2, '數據庫'),(3, 0, 3, 'javascript'),(4, 1, 1, '框架模板'),(5, 1, 2, '函數總結'),(6, 2, 1, 'mysql'),(7, 4, 1, '框架'),(8, 4, 2, '模板'),(9, 8, 1, 'smarty'),(10, 7, 2, 'thinkphp'),(11, 10, 1, 'thinkphp技巧'),(12, 10, 2, 'thinkphp模板'),(13, 12, 3, '模板知識總結'),(14, 12, 2, '模板視頻教程'),(15, 11, 1, 'model技巧');

函數實現代碼

function tree(&$list,$pid=0,$level=0,$html='--'){  static $tree=array();  foreach($list as $v){    if($v['pid']==$pid){      $v['level']=$level;      $v['html']=str_repeat($html,$level);      $tree[]=$v;      tree($list,$v['id'],$level+1,$html);    }   }  return $tree;}

以上tree函數的第一個參數$list就是獲取的如上表的一個二維數組的結果集。需要注意的是從數據庫獲取結果集的sql語句必須加上order by sort asc,否則sort字段將不能發揮排序的作用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 临颍县| 图片| 新安县| 沾化县| 屯留县| 日喀则市| 长顺县| 伊川县| 亚东县| 临朐县| 和平区| 博罗县| 桃园县| 石棉县| 徐水县| 海门市| 秦安县| 额济纳旗| 马龙县| 南部县| 错那县| 黄龙县| 昭苏县| 沅江市| 卢氏县| 海安县| 揭东县| 东丰县| 怀柔区| 江达县| 莱阳市| 永川市| 平陆县| 社旗县| 高尔夫| 双辽市| 渭源县| 会理县| 四会市| 洞口县| 通许县|