Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/11/2011, 15:13
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 17 años
Puntos: 260
Sonrisa Respuesta: Problemas con recursividad y arrays multidimensionales

Hola,

Posiblemente,

Cita:
Iniciado por Mikimoto74 Ver Mensaje
... 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. ...
El problema es que estás usando la misma variable para agregar los valores y cuando regresa de la función recursiva trae todos los valores anteiores mas los nuevos y la lógica se vuelve bastante confusa.

Código:
$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_parsed, parse_opciones($submenu, $nivel++));
            }
        }
        return $opciones_parsed;
    }
Seguramente el array_merge, mezcla los valores de $opciones_parsed, con los valores que ya existían y se vuelve un relajo.

Revisa el método renum de este post:
http://www.forosdelweb.com/f18/saber...3/#post3287009
En tu caso son objetos, etc, etc, es simplemente para que observes como puedes adaptar tu código para que funcione.

Saludos,