Recursión para la generación del árbol de menús
En su situación, tiene una estructura de base de datos donde las categorías tienen un campo 'raíz' que indica su categoría principal . La salida HTML que desea implica listas anidadas que representan la jerarquía de categorías. Para lograr esto, se puede emplear una función PHP recursiva.
Aquí hay una función de ejemplo:
function recurse($categories, $parent = null, $level = 0) {
$ret = '';
foreach ($categories as $index => $category) {
if ($category['root'] == $parent) {
$ret .= '' . $category['name'] . '
';
$ret .= $this->recurse($categories, $category['id'], $level 1);
$ret .= ' ';
}
}
return $ret . '
';
}
Esta función supone que las categorías raíz tienen un campo 'raíz' con un valor nulo. Itera a través de las categorías, identifica categorías secundarias según su campo 'raíz' y construye el HTML usando listas anidadas.
Para usar esta función:
Opcionalmente, puede modificar la función para evitar listas vacías verificando si la categoría tiene categorías secundarias antes de crear la lista:
function recurse($categories, $parent = null, $level = 0) {
$ret = '';
foreach ($categories as $index => $category) {
if ($category['root'] == $parent) {
$ret .= '' . $category['name'] . '
';
$sub = $this->recurse($categories, $category['id'], $level 1);
if ($sub != '
') {
$ret .= $sub;
}
$ret .= ' ';
}
}
return $ret . '
';
}
Esta función modificada solo creará listas si la categoría tiene al menos un hijo.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3