Hola,
Posiblemente,
Cita:
Iniciado por Mikimoto74 ... 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,