Re: [PHP-ES] menu UL lI recursivo

[email protected] (Mauricio Rodriguez) Mon, 7 Jan 2013 14:14:34 -0600
Newsgroups php.general.es
Message-ID <CAN21F=QYHDAe2BVWTY3seY2x4p_wNZ12njHXwc5RrCzHiNr0kw@mail.gmail.com>
yo use esto:

  //printf("arr_mnu: <pre>%s</pre>",print_r($arr_mnu,true)); //exit;

  $menu = '
    <ul class="dropdown"><!-- menu -->

';

  $menu .= array2ul($arr_mnu);

  $menu .= '
    </ul><!-- close menu -->';


ya le das un echo donde quieras que aparezca.

la funcion auxiliar que convierte un array en una lista:

function array2ul($array, &$ul='', $level=2){

    global $mnu_flat;

    $ident = str_repeat("\t", $level);

    foreach($array as $key => $value)
    {

        $es_papa = is_array($array[$key]);

        if($es_papa)
        $ul .= "$ident<li><a href=\"".$mnu_flat[$key]."\">$key</a>";
        else
        $ul .= "$ident<li><a href=\"$value\">$key</a>";

        if( $es_papa )
        {
            $ul .= "\n$ident<ul class=\"sub_menu\">\n";
            array2ul($value, $ul, $level+1);
            $ul .= "$ident</ul>\n";
        }
        $ul .= $es_papa ? "$ident</li>\n" : "</li>\n";
    }

    return $ul;
}

Level es la dimesion del arreglo.

Saludos.



El 7 de enero de 2013 09:02, Roberto Barreiro <[email protected]>escribió:

> Hola lista
>
> Por mas que lo intento y busco en internet, no encuentro nada que
> funcione..... tengo un array multinivel (les paso solo una pequeña
> parte) con el cual quiero generar un menu ul li multinivel .... no se
> cuantos niveles puedo llegar a tener, por lo que deberia hacerlo con
> una funcion recursiva ... y como he dicho, no encuentro nada en
> internet que pueda adaptar ... alguno de vosotros tiene un link a
> algun ejemplo que me pueda valer??? ..... los ejemplos que he
> encontrado, no logro hacerlos funcionar .... gracias!!!
>
>
> Array
> (
>     [7] => Array
>         (
>             [id_categoria] => 8
>             [linklabel] => exteriores
>             [parentid] => 7
>             [submenu] => Array
>                 (
>                     [8] => Array
>                         (
>                             [id_categoria] => 9
>                             [linklabel] => version
>                             [parentid] => 8
>                             [submenu] => Array
>                                 (
>                                     [9] => Array
>                                         (
>                                             [id_categoria] => 11
>                                             [linklabel] => Formato DIN2
>                                             [parentid] => 9
>                                         )
>
>                                 )
>
>                         )
>
>                 )
>
>         )
>
> )
>