首頁  >  文章  >  後端開發  >  php利用遞歸函數實現無限級分類

php利用遞歸函數實現無限級分類

WBOY
WBOY原創
2016-08-08 09:18:561023瀏覽

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

什麼是無限級分類?

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

無限級分類原理簡介

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

  閒話不多說,該展現本文的實例了。

  作為一個狂熱海賊迷,這篇的實例我就以《海賊王》人物組織做案例。

資料庫準備:

  建表onepiece:

<span>create</span><span>table</span><span> onepiece(
    id </span><span>int</span><span> auto_increment,
    pid </span><span>int</span><span>not</span><span>null</span><span>,
    name </span><span>varchar</span>(<span>225</span>) <span>not</span><span>null</span><span>,
    </span><span>primary</span><span>key</span><span>(id)
);</span>

   〜軍。海軍有大將:青雉,赤犬,黃猿。海賊有:四皇,七武海,草帽海賊團。四皇有香克斯,七武海多佛朗明哥,克洛克達爾,草帽海賊團有索隆。 (打個廣告:海賊王真的很好看)。

最終目的:

  我們今天製作的是兩種形式的無限級分類形式,一種是下拉列表式,一種則是導航Link式的。直接上效果圖了:

下拉列表式

導航Link式

 實例代碼:

  我封裝了一個UnlimitedLink類,用來調用下拉列表形式(調用)展示下拉列表形式,調用。也可以增加(addNodes())和刪除(deleteNodes)分類。

<span>insert</span> onepiece <span>values</span><span>    (</span><span>1</span>,<span>0</span>,<span>'</span><span>海军</span><span>'</span><span>),
    (</span><span>2</span>,<span>0</span>,<span>'</span><span>海贼</span><span>'</span><span>),
    (</span><span>3</span>,<span>0</span>,<span>'</span><span>革命军</span><span>'</span><span>),
    (</span><span>4</span>,<span>1</span>,<span>'</span><span>青雉</span><span>'</span><span>),
    (</span><span>5</span>,<span>1</span>,<span>'</span><span>赤犬</span><span>'</span><span>),
    (</span><span>6</span>,<span>1</span>,<span>'</span><span>黄猿</span><span>'</span><span>),
    (</span><span>7</span>,<span>2</span>,<span>'</span><span>四皇</span><span>'</span><span>),
    (</span><span>8</span>,<span>2</span>,<span>'</span><span>七武海</span><span>'</span><span>),
    (</span><span>9</span>,<span>2</span>,<span>'</span><span>草帽海贼团</span><span>'</span><span>),
    (</span><span>10</span>,<span>9</span>,<span>'</span><span>索隆</span><span>'</span><span>),
    (</span><span>11</span>,<span>7</span>,<span>'</span><span>香克斯</span><span>'</span><span>),
    (</span><span>12</span>,<span>8</span>,<span>'</span><span>多弗朗明哥</span><span>'</span><span>),
    (</span><span>13</span>,<span>8</span>,<span>'</span><span>克洛克达尔</span><span>'</span>);

  類中函數主要採取了遞歸函數的方法,如果理解深刻理解遞歸函數,其餘的部分也就水到渠成了。我會在後面的部分詳細介紹實作遞歸函數的三種方法。

以上就介紹了php利用遞歸函數實現無限級分類,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn