濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > PHP利用遞歸函數(shù)實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)的方法

PHP利用遞歸函數(shù)實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)的方法

熱門(mén)標(biāo)簽:地圖標(biāo)注風(fēng)向標(biāo) 上海公司外呼系統(tǒng)線(xiàn)路 十堰ai電話(huà)機(jī)器人效果怎么樣 芒果電銷(xiāo)機(jī)器人 銀川ai電話(huà)機(jī)器人 臨沂智能電銷(xiāo)機(jī)器人軟件 電梯外呼線(xiàn)路板維修視頻 安陽(yáng)自動(dòng)外呼系統(tǒng)價(jià)格是多少 浙江外呼電話(huà)系統(tǒng)軟件

相信很多學(xué)php的很多小伙伴都會(huì)嘗試做一個(gè)網(wǎng)上商城作為提升自己技術(shù)的一種途徑。各種對(duì)商品分類(lèi),商品名之類(lèi)的操作應(yīng)該是得心應(yīng)手,那么就可以嘗試下無(wú)限級(jí)分類(lèi)列表的制作了。

什么是無(wú)限級(jí)分類(lèi)?

無(wú)限級(jí)分類(lèi)是一種分類(lèi)技巧,例如部門(mén)組織,文章分類(lèi),學(xué)科分類(lèi)等常用到無(wú)限級(jí)分類(lèi),將其簡(jiǎn)單理解成分類(lèi)就好了。其實(shí)我們仔細(xì)想一下,生活中的分類(lèi)簡(jiǎn)直太多了,衣服可以分為男裝和女裝,也可以分為上衣和褲子,也可以根據(jù)年齡段分類(lèi)。分類(lèi)無(wú)處不在,分類(lèi)顯得“無(wú)限”。我這里就不說(shuō)無(wú)限分類(lèi)的必要性了。

無(wú)限級(jí)分類(lèi)原理簡(jiǎn)介

無(wú)限分類(lèi)看似"高大上",實(shí)際上原理是非常簡(jiǎn)單的 。無(wú)限分類(lèi)不僅僅需要代碼的巧妙性,也要依托數(shù)據(jù)庫(kù)設(shè)計(jì)的合理性。要滿(mǎn)足無(wú)限級(jí)分類(lèi),數(shù)據(jù)庫(kù)需要有兩個(gè)必須的字段,id,pid。id用來(lái)標(biāo)識(shí)自身,而pid則是用來(lái)表明父級(jí)id。也就是說(shuō),每個(gè)分類(lèi)記錄不僅描述了自身,還描述了與其關(guān)心最為緊密的另一個(gè)id。看似復(fù)雜的事情被這樣一個(gè)小技巧解決了。

php無(wú)限級(jí)分類(lèi)是經(jīng)常要用到的,本人以前一直用的是已經(jīng)寫(xiě)好的,所以沒(méi)仔細(xì)去研究過(guò),下面是一個(gè)使用遞歸實(shí)現(xiàn)的簡(jiǎn)單的php無(wú)限級(jí)分類(lèi)的函數(shù);也許這不是最優(yōu)的方法,但對(duì)于一般的應(yīng)用也足夠了。

數(shù)據(jù)表結(jié)構(gòu)

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 '排序數(shù)字',
 `name` varchar(30) DEFAULT NULL COMMENT '名稱(chēng)',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='無(wú)限極分類(lèi)表' AUTO_INCREMENT=1 ;

數(shù)據(jù)

INSERT INTO `category` (`id`, `pid`, `sort`, `name`) VALUES
(1, 0, 1, 'php'),
(2, 0, 2, '數(shù)據(jù)庫(kù)'),
(3, 0, 3, 'javascript'),
(4, 1, 1, '框架模板'),
(5, 1, 2, '函數(shù)總結(jié)'),
(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, '模板知識(shí)總結(jié)'),
(14, 12, 2, '模板視頻教程'),
(15, 11, 1, 'model技巧');

函數(shù)實(shí)現(xiàn)代碼

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函數(shù)的第一個(gè)參數(shù)$list就是獲取的如上表的一個(gè)二維數(shù)組的結(jié)果集。需要注意的是從數(shù)據(jù)庫(kù)獲取結(jié)果集的sql語(yǔ)句必須加上order by sort asc,否則sort字段將不能發(fā)揮排序的作用。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

您可能感興趣的文章:
  • php求斐波那契數(shù)的兩種實(shí)現(xiàn)方式【遞歸與遞推】
  • php菜單/評(píng)論數(shù)據(jù)遞歸分級(jí)算法的實(shí)現(xiàn)方法
  • PHP實(shí)現(xiàn)無(wú)限極分類(lèi)的兩種方式示例【遞歸和引用方式】
  • PHP自定義遞歸函數(shù)實(shí)現(xiàn)數(shù)組轉(zhuǎn)JSON功能【支持GBK編碼】
  • PHP遞歸寫(xiě)入MySQL實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)數(shù)據(jù)操作示例
  • PHP數(shù)組遞歸排序?qū)崿F(xiàn)方法示例
  • PHP迭代與遞歸實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)
  • PHP實(shí)現(xiàn)遞歸的三種方法

標(biāo)簽:常州 遂寧 寧夏 徐州 武威 吐魯番 荊門(mén) 遵義

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP利用遞歸函數(shù)實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)的方法》,本文關(guān)鍵詞  PHP,利用,遞歸,函數(shù),實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP利用遞歸函數(shù)實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)的方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于PHP利用遞歸函數(shù)實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    瑞金市| 富民县| 盐源县| 西安市| 城口县| 曲阜市| 巫山县| 封丘县| 永德县| 柯坪县| 鹤峰县| 九龙城区| 许昌市| 密云县| 赣榆县| 海丰县| 丹寨县| 九龙城区| 阿巴嘎旗| 日照市| 龙口市| 项城市| 深圳市| 固始县| 石台县| 佳木斯市| 牡丹江市| 沁水县| 德江县| 徐闻县| 读书| 泸西县| 乡宁县| 托克逊县| 临高县| 赤峰市| 栖霞市| 自贡市| 长宁县| 尉犁县| 黄大仙区|