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_parsed, parse_opciones($submenu, $nivel++));
}
}
return $opciones_parsed;
}