Recursão para geração de árvore de menu
Na sua situação, você tem uma estrutura de banco de dados onde as categorias têm um campo 'raiz' indicando sua categoria pai . A saída HTML desejada envolve listas aninhadas que representam a hierarquia de categorias. Para conseguir isso, uma função PHP recursiva pode ser empregada.
Aqui está um exemplo de função:
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 função assume que as categorias raiz possuem um campo 'raiz' com um valor nulo. Ele itera pelas categorias, identifica categorias secundárias com base em seu campo 'raiz' e constrói o HTML usando listas aninhadas.
Para usar esta função:
Opcionalmente, você pode modificar a função para evitar listas vazias, verificando se a categoria tem categorias filhas antes de criar a 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 função modificada só criará listas se a categoria tiver pelo menos um filho.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3