I having some problems generating a full tree of my db(sitemap). 
I reached a level that i want to write better code. Thats why i choose a recursive function for this puzzle.
I want to generate a endless unordered list. Like so:
<ul>
 <li><a></a>
  <ul>
    <li><a></a>(subs)
    etc etc etc.....
  </ul>
 </li>
</ul>
Like i already said i tried the following:
<?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);
?>
but this is a puzzle i cant figure out properly, this the result so far(messy):
<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>
A big mess! The $sitemap array looks like this:
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
                                        )                            
                        )
So childeren in childeren in childeren, Is this the best way to do this/ on the right track?
Or are there beter ways out there? Like sql tree's or something? or just again the old foreach in foreach ..(which i am trying to avoid this time).
Any help would be much appreciated!!!
Thanks in advance,
Jacob
 
    