Hierarchal Menu in PHP from Array -
alright, it's hump day, , brain's shot.
can tell me i'm doing wrong here, i'm trying build navigation list (hierarchal)
here's array:
array ( [0] => array ( [contentid] => 1 [parentid] => 0 [linkalias] => ) [1] => array ( [contentid] => 2 [parentid] => 0 [linkalias] => inner ) [2] => array ( [contentid] => 3 [parentid] => 2 [linkalias] => inner-2 ) [3] => array ( [contentid] => 4 [parentid] => 3 [linkalias] => inner-21 ) )
and attempts @ recursive function:
// parse out array displaying multi-level menu private function parsemenu($menu, $parent = 0){ $ret .= '<ul>'; $ict = count($menu); for($i=0; $i < $ict; ++$i){ if($menu[$i]['parentid'] == $parent){ $ret .= ' <li>' . $menu[$i]['linkalias']; if($parent > 0){ $ret .= parsemenu($menu, $menu[$i]['contentid']); } $ret .= '</li>'; } } $ret .= '</ul>'; return $ret; }
right now, returning:
<ul> <li></li> <li>inner</li> </ul>
it should showing
<ul> <li></li><!-- yes intentional --> <li>inner <ul> <li>inner-2 <ul> <li>inner-21</li> </ul> </li> </ul> </ul>
so.. doing wrong, , how can fix it?
make line ...
if($parent > 0){ $ret .= parsemenu($menu, $menu[$i]['contentid']); }
into ...
$ret .= $this->parsemenu($menu, $menu[$i]['contentid']);
you never calling function again because starting $parent = 0
$ret .= '</ul>'; if($ret == '<ul></ul>'){ return; } else { return $ret; }
Comments
Post a Comment