[英]Recursive category tree in php
我有這個SQL表
如何用php之類返回它?
Root1
- SubCat 1
-- SubSubCat 1
- SubCat 2
Root2
我找到了 ,但是我不能以我需要的形式返回。 但是腳本仍然顯示所有類別,首先顯示為子類別,然后顯示為根類別。
怎么做?
這樣就可以了:
$items = array(
(object) array('id' => 42, 'sub_id' => 1),
(object) array('id' => 43, 'sub_id' => 42),
(object) array('id' => 1, 'sub_id' => 0),
);
$childs = array();
foreach($items as $item)
$childs[$item->sub_id][] = $item;
foreach($items as $item) if (isset($childs[$item->id]))
$item->childs = $childs[$item->id];
$tree = $childs[0];
print_r($tree);
這是通過首先按parent_id索引類別來實現的。 然后,對於每個類別,我們只需要將category-> childs設置為childs [category-> id],就可以構建樹了!
因此,現在$ tree是類別樹。 它包含一個具有sub_id = 0的項的數組,這些項本身包含其子項的數組,這些子項本身...
print_r($ tree)的輸出:
stdClass Object
(
[id] => 1
[sub_id] => 0
[childs] => Array
(
[0] => stdClass Object
(
[id] => 42
[sub_id] => 1
[childs] => Array
(
[0] => stdClass Object
(
[id] => 43
[sub_id] => 42
)
)
)
)
)
所以這是最終功能:
function buildTree($items) {
$childs = array();
foreach($items as $item)
$childs[$item->sub_id][] = $item;
foreach($items as $item) if (isset($childs[$item->id]))
$item->childs = $childs[$item->id];
return $childs[0];
}
$tree = buildTree($items);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.