我有一些問題,生成我的數據庫(網站地圖)的完整樹。
我達到了我想要編寫更好代碼的級別。這就是爲什麼我選擇這個謎題的遞歸函數。遞歸站點地圖數組函數php
我想生成一個無限的無序列表。 像這樣:
<ul>
<li><a></a>
<ul>
<li><a></a>(subs)
etc etc etc.....
</ul>
</li>
</ul>
就像我已經說過我嘗試了以下內容:
<?php
function traverseArray($array, $sub=false)
{
foreach($array as $cat)
{
if(isset($cat['childeren']) && is_array($cat['childeren']))
{
//a category with subs
echo('<ul id="'.$cat['parent_cat_id'].'" class="lv0">');
echo('<li id="'.$cat['parent_cat_id'].'"><a href=#>'.$cat['name'].'</a>'."\n");
traverseArray($cat['childeren'], true);
}else{
if($sub){
//a sub category of category
echo('</ul></li>');
echo('<li id="'.$cat['parent_cat_id'].'"><a href=#>'.$cat['name'].'</a></li>'."\n");
}else{
//category with no subs
echo('<ul id="'.$cat['parent_cat_id'].'" class="lv0">');
echo('<li id="'.$cat['parent_cat_id'].'"><a href=#>'.$cat['name'].'</a></li>'."\n");
echo('</ul>');
}
}
}
}
traverseArray($sitemap);
?>
,但是這是一個謎,我不能正確地計算出, 這個結果至今(亂):
<ul id="0" class="lv0">
<li id="0"><a href=#>Headsets</a>
</ul></li>
<li id="1"><a href=#>(USB) headsets ....</a></li>
</ul></li>
<li id="1"><a href=#>... headsets</a></li>
</ul></li>
<li id="1"><a href=#>.. USB headsets</a></li>
</ul></li>
<li id="1"><a href=#>Bluetooth headsets</a></li>
<ul id="0" class="lv0">
<li id="0"><a href=#>Unified Communications</a></li>
一團糟! 在$網站地圖陣列看起來像這樣:
Array
(
[0] => Array
(
[category_id] => 1
[parent_cat_id] => 0
..........etc
........etc
[type] => cat
[childeren] => Array
(
[0] => Array
(
[category_id] => 2
[parent_cat_id] => 1
.......etc
[type] => cat
[childeren] => Array
(
[0] => Array
(
[category_id] => 32
[parent_cat_id] => 16
.......etc
[type] => series
)
)
所以childeren在childeren childeren, 這是做到這一點的最好辦法/在正確的軌道上?
或者有沒有方法嗎? 像SQL樹的東西?或者只是在foreach中的舊foreach ..(我試圖避免這個時間)。
任何幫助將不勝感激!
由於提前,
雅各
發現本網站上的一些有用的mSQL的查詢: 仍然不知道這是否是這樣做的正確的方式, http://mikehillyer.com/articles/managing -hierarchical-data-in-mysql/ – Jacob
請幫我解決我的問題(http://stackoverflow.com/questions/17673917/confused-to-make-sitemap-using-php-coding)與此相同的問題 – user2173803