PHP實現無限極分類之遞迴方法

2021-09-19 03:05:52 字數 1644 閱讀 9708

面試的時候被問到無限極分類的設計和實現,比較常見的做法是在建表的時候,增加乙個pid欄位用來區別自己所屬的分類

資料在資料庫中儲存大概是這個樣子,怎麼實現無限極遞迴呢,有兩種常用的做法,遞迴和引用演算法

遞迴演算法`

$array

=array

(array

('id'

=>1,

'pid'

=>0,

'name'

=>

'河北省'),

array

('id'

=>2,

'pid'

=>0,

'name'

=>

'北京市'),

array

('id'

=>3,

'pid'

=>1,

'name'

=>

'邯鄲市'),

array

('id'

=>4,

'pid'

=>2,

'name'

=>

'朝陽區'),

array

('id'

=>5,

'pid'

=>2,

'name'

=>

'通州區'),

array

('id'

=>6,

'pid'

=>4,

'name'

=>

'望京'),

array

('id'

=>7,

'pid'

=>4,

'name'

=>

'酒仙橋'),

array

('id'

=>8,

'pid'

=>3,

'name'

=>

'永年區'),

array

('id'

=>9,

'pid'

=>1,

'name'

=>

'武安市'),

);/** * 遞迴實現無限極分類

* @param $array 分類資料

* @param $pid 父id

* @param $level 分類級別

* @return $list 分好類的陣列 直接遍歷即可 $level可以用來遍歷縮排

*/function

gettree

($array

,$pid=0

,$level=0

)}return

$list;}

/* * 獲得遞迴完的資料,遍歷生成分類

*/$array

=gettree

($array);

//處理樣式,進行分級

foreach

($array

as$value

)

列印結果

河北省–邯鄲市

----永年區

–武安市

北京市–朝陽區

----望京

----酒仙橋

–通州區

php遞迴實現無限極分類

一 陣列 categories array array id 1,name 陝西 parent id 0 array id 2,name 西安 parent id 1 array id 3,name 長安區 parent id 2 array id 4,name 河南 parent id 0 arr...

php實現無限極分類

利用兩個for迴圈實現無限級分類 表 欄位名字段型別 備註預設值 idint 主鍵 auto increment name varchar 分類名稱 pidint 父類id0 頂級分類的 pid 預設就是0了。當我們想取出某個分類的子分類樹的時候,基本思路就是遞迴,當然,出於效率問題不建議每次遞迴都...

PHP實現無限極分類

created by epp4.user t470 date 15 08 08 time 上午12 00 準備陣列,代替從資料庫中檢索出的資料 共有三個必須欄位id,name,pid header content type text html charset utf 8 categories arr...