婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP利用遞歸函數實現無限級分類的方法

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

熱門標簽:地圖標注風向標 上海公司外呼系統線路 十堰ai電話機器人效果怎么樣 芒果電銷機器人 銀川ai電話機器人 臨沂智能電銷機器人軟件 電梯外呼線路板維修視頻 安陽自動外呼系統價格是多少 浙江外呼電話系統軟件

相信很多學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字段將不能發揮排序的作用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

您可能感興趣的文章:
  • php求斐波那契數的兩種實現方式【遞歸與遞推】
  • php菜單/評論數據遞歸分級算法的實現方法
  • PHP實現無限極分類的兩種方式示例【遞歸和引用方式】
  • PHP自定義遞歸函數實現數組轉JSON功能【支持GBK編碼】
  • PHP遞歸寫入MySQL實現無限級分類數據操作示例
  • PHP數組遞歸排序實現方法示例
  • PHP迭代與遞歸實現無限級分類
  • PHP實現遞歸的三種方法

標簽:常州 遂寧 寧夏 徐州 武威 吐魯番 荊門 遵義

巨人網絡通訊聲明:本文標題《PHP利用遞歸函數實現無限級分類的方法》,本文關鍵詞  PHP,利用,遞歸,函數,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP利用遞歸函數實現無限級分類的方法》相關的同類信息!
  • 本頁收集關于PHP利用遞歸函數實現無限級分類的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 南澳县| 邹平县| 贡觉县| 太康县| 博湖县| 西峡县| 东安县| 上思县| 南岸区| 舞钢市| 龙江县| 孝昌县| 漠河县| 垣曲县| 安陆市| 大宁县| 通榆县| 鹤庆县| 那坡县| 鸡东县| 自贡市| 古浪县| 恩施市| 依兰县| 滨海县| 麦盖提县| 丘北县| 错那县| 广丰县| 襄城县| 文化| 加查县| 长海县| 崇信县| 大足县| 宕昌县| 乌拉特前旗| 岫岩| 南昌县| 云和县| 晋江市|