相信許多學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教程有興趣的朋友有所幫助。