I'm looking for some help to improve this function to return a well formed html list.
<?php
$data[0] = array(1=>'Home', 2=>'Sec1', 3=>'Sec2', 4=>'SecX', 5=>'SecY', 6=>'SecZ');
$data[3] = array(10=>'SubSec4', 20=>'SubSec5', 30=>'SubSec6');
$data[20] = array(100=>'SSec700', 200=>'SSec800', 300=>'SSec900');
function build_list($idx, $arr, $level, $maxlevel, $subs=null, $num=null){
$list = $arr[$idx];
asort($list);
$num = count($list) - 1;
foreach($list as $key => $val){
if ($level == 0){
$result .= '<li><a href=#>'.$val.'</a></li>'."\n";
}
else{
if($num == 0){
$subs .= '<li><a href=#>'.$val.'</a></li>'."\n";
$result .= '<ul>'.$subs.'</ul>';
}
else{
$subs .= '<li><a href=#>'.$val.'</a></li>'."\n";
}
}
$num--;
if ((isset($arr[$key])) AND (($maxlevel > $level+1) OR ($maxlevel == 1))){
$result .= build_list($key, $arr, $level+1, $maxlevel, $subs, $num);
}
}
return $result;
}
$list = build_list(0, $data, 0, 4);
echo $list;
Current result:
<li><a href=#>Home</a></li>
<li><a href=#>Sec1</a></li>
<li><a href=#>Sec2</a></li>
<ul>
<li><a href=#>SubSec4</a></li>
<li><a href=#>SubSec5</a></li>
<li><a href=#>SSec700</a></li>
<li><a href=#>SSec800</a></li>
<li><a href=#>SSec900</a></li>
</ul>
<ul>
<li><a href=#>SubSec4</a></li>
<li><a href=#>SubSec5</a></li>
<li><a href=#>SubSec6</a></li>
</ul>
<li><a href=#>SecX</a></li>
<li><a href=#>SecY</a></li>
<li><a href=#>SecZ</a></li>
Wanted result:
<li><a href=#>Home</a></li>
<li><a href=#>Sec1</a></li>
<li><a href=#>Sec2</a></li>
<ul>
<li><a href=#>SubSec4</a></li>
<li><a href=#>SubSec5</a></li>
<ul>
<li><a href=#>SSec700</a></li>
<li><a href=#>SSec800</a></li>
<li><a href=#>SSec900</a></li>
</ul>
<li><a href=#>SubSec6</a></li>
</ul>
<li><a href=#>SecX</a></li>
<li><a href=#>SecY</a></li>
<li><a href=#>SecZ</a></li>
Thanks in advance