今天有網友出了道題:
給出如下的父子結構(你可以用你所用語言的類似結構來描述,第一列是父,第二列是子),將其梳理成類似如圖的層次父子結構。輸出結果:origin = [('
a112
', '
a1122'),
('a', 'a1'
), ('a
', 'a2'
), ('a1
', '
a11'
), ('a2
', '
a21'
), ('a2
', '
a22'
), ('a
', 'a3'
), (
'a22
', '
a221'),
('a11
', '
a111'),
('a21
', '
a211'),
('a11
', '
a112'),
('a21
', '
a212'),
('a11
', '
a113'),
('a112
', '
a1121'),
('a3
', '
a31'
), (
'a31
', '
a311'),
('a22
', '
a222'),
('a31
', '
a312'),
('a31
', '
a313'),
('a311
', '
a3111'),
('a312
', '
a3121'),
('a3111
', '
a31111
')]
看了一下是無限級分類的原理,可以用遞迴來實現:
<?php輸出:$origin =[
['a112', 'a1122'],['a', 'a1'],['a', 'a2'],['a1', 'a11'],['a2', 'a21'],['a2', 'a22'],['a', 'a3'],['a22', 'a221'],['a11', 'a111'],['a21', 'a211'],['a11', 'a112'],['a21', 'a212'],['a11', 'a113'],['a112', 'a1121'],['a3', 'a31'],['a31', 'a311'],['a22', 'a222'],['a31', 'a312'],['a31', 'a313'],['a311', 'a3111'],['a312', 'a3121'],['a3111', 'a31111']
];//
根據父id找出子資訊
function level($cate, $html = '-', $pid = '0', $level = 0)
}return
$arr;}
//構建頂級分類
$pids =;
$cids =;
foreach($origin
as$val
) $top = array_flip(array_diff($pids, $cids
));foreach($top
as$key => $val
) $res = level($origin, ' ');
foreach($res
as$k => $v
)
PHP遞迴實現無限級分類
在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴演算法並結合mysql資料表實現無限級分類。在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴...
PHP實現遞迴無限級分類
在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴演算法並結合mysql資料表實現無限級分類。遞迴,簡單的說就是一段程式 的重複呼叫,當把 寫到乙個自定義函式中,將引數等變數儲存,函式中重複呼叫函式,直到達到某個條件才跳出...
PHP遞迴實現無限級分類
在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴演算法並結合mysql資料表實現無限級分類。在一些複雜的系統中,要求對資訊欄目進行無限級的分類,以增強系統的靈活性。那麼php是如何實現無限級分類的呢?我們在本文中使用遞迴...