溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在PHP中使用遞歸函數(shù)實現(xiàn)一個無限級分類

發(fā)布時間:2021-04-20 16:51:18 來源:億速云 閱讀:342 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了怎么在PHP中使用遞歸函數(shù)實現(xiàn)一個無限級分類,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

php有什么用

php是一個嵌套的縮寫名稱,是英文超級文本預(yù)處理語言,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因為php是開源的,從而使得php經(jīng)久不衰。

什么是無限級分類?

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

無限級分類原理簡介

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

php無限級分類是經(jīng)常要用到的,本人以前一直用的是已經(jīng)寫好的,所以沒仔細(xì)去研究過,下面是一個使用遞歸實現(xiàn)的簡單的php無限級分類的函數(shù);也許這不是最優(yōu)的方法,但對于一般的應(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 '名稱',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='無限極分類表' AUTO_INCREMENT=1 ;

數(shù)據(jù)

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

函數(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;
}

上述內(nèi)容就是怎么在PHP中使用遞歸函數(shù)實現(xiàn)一個無限級分類,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI