欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年03月22日 10:01:53   作者:CODETC  
今天小編就為大家分享一篇關于PHP利用遞歸函數實現無限級分類的方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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

什么是無限級分類?

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

無限級分類原理簡介

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

php無限級分類是經常要用到的,本人以前一直用的是已經寫好的,所以沒仔細去研究過,下面是一個使用遞歸實現的簡單的php無限級分類的函數;也許這不是最優(yō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 '排序數字',
 `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字段將不能發(fā)揮排序的作用。

總結

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

相關文章

  • PHP遠程調用以及RPC框架

    PHP遠程調用以及RPC框架

    這篇文章主要介紹了PHP遠程調用以及RPC框架,對遠程調用感興趣的同學,可以參考下
    2021-04-04
  • PHP連接MySQL查詢結果中文顯示亂碼解決方法

    PHP連接MySQL查詢結果中文顯示亂碼解決方法

    MySQL和Apache兩個系統的編碼(字符集)問題讓我費勁腦筋,吃盡苦頭。網上對這些問題的解決比較零散,比較片面,大部分是提供解決方法,卻不說為什么。于是我將這幾天收獲總結一下,避免后來者再走彎路
    2013-10-10
  • laravel源碼分析隊列Queue方法示例

    laravel源碼分析隊列Queue方法示例

    這篇文章主要為大家介紹了laravel源碼分析隊列Queue方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪<BR>
    2022-04-04
  • php使用parse_url和parse_str解析URL

    php使用parse_url和parse_str解析URL

    本文主要向大家介紹了php中2個解析URL的方法(parse_url和parse_str),以及這2種方法的簡介和用法,十分全面,推薦給有需要的小伙伴們。
    2015-02-02
  • Linux下實現PHP多進程的方法分享

    Linux下實現PHP多進程的方法分享

    PHP多進程:使用PHP的Process Control Functions(PCNTL/線程控制函數),需要的朋友可以參考下
    2012-08-08
  • PHP信號量基本用法實例詳解

    PHP信號量基本用法實例詳解

    這篇文章主要介紹了PHP信號量基本用法,較為詳細的分析了PHP信號量的基本概念、使用技巧與相關注意事項,需要的朋友可以參考下
    2016-02-02
  • PHP與MySQL開發(fā)中頁面出現亂碼的一種解決方法

    PHP與MySQL開發(fā)中頁面出現亂碼的一種解決方法

    PHP與MySQL開發(fā)中頁面出現亂碼的一種解決方法...
    2007-07-07
  • PHP中l(wèi)trim()函數的用法與實例講解

    PHP中l(wèi)trim()函數的用法與實例講解

    今天小編就為大家分享一篇關于PHP中l(wèi)trim()函數的用法與實例講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • PHP header函數分析詳解

    PHP header函數分析詳解

    PHP只是以HTTP協議將HTML文檔的標頭送到瀏覽器,告訴瀏覽器具體怎么處理這個頁面,至于傳送的內容則需要熟悉一下HTTP協議了,與PHP無關
    2011-08-08
  • php抽象類用法實例分析

    php抽象類用法實例分析

    這篇文章主要介紹了php抽象類用法,以實例形式深入淺出的分析了php中抽象類的概念、定義及實現方法,需要的朋友可以參考下
    2015-07-07

最新評論