Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2011, 07:55
Avatar de Mikimoto74
Mikimoto74
 
Fecha de Ingreso: enero-2005
Mensajes: 88
Antigüedad: 20 años
Puntos: 2
Problemas con recursividad y arrays multidimensionales

Hola,

necesito que a partir de un array multidimensional que representa la jerarquía de un menú de opciones, algunas de las cuales que contienen a su vez submenús anidados, poder pasarlo todo a un array unidimensional, para realizar un listado.

Cada elemento del array menú es un objeto de stdClass (objeto estándar de php) representando cada opción. Dispone de varias propiedades, como "nombre", "url", etc, y una de las cuales se llama "submenu", que puede contener a su vez un array de opciones (un submenú). Durante el proceso he de añadir una propiedad más a cada objeto opción que indique el nivel del menú en el que se encuentra dicha opción.

El proceso lo he conseguido obtener, pero me falla asignar bien el nivel de jerarquía en el que se encuentra cada opción, que sería desde 0, para las opciones de primer nivel, en adelante.

Este es el código:

Código PHP:
$menu parse_opciones($menu);


  function 
parse_opciones($opciones$nivel 0) {
        
$opciones_parsed = array();
        foreach (
$opciones as $opcion) {
            
$opcion->nivel $nivel;
            
$opciones_parsed[] = $opcion;
            if (
is_array($opcion->submenu) && count($opcion->submenu)) {
                
$submenu $opcion->submenu;
                
$opcion->submenu '';
                
$opciones_parsed array_merge($opciones_parsedparse_opciones($submenu$nivel++));
            }
        }
        return 
$opciones_parsed;
    } 
Os agradecería mucho que me ayudaseis. He conseguido aparentemente lo más difícil, pero lo del nivel aún se me resiste después de darle tantas vueltas.