"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Construa um menu de nível infinito com PHP e MySQL: solução recursiva

Construa um menu de nível infinito com PHP e MySQL: solução recursiva

Postado em 2025-04-22
Navegar:825

How to Build Unlimited-Level Menus with PHP and MySQL: A Recursive Solution?

construindo menus de nível ilimitado com php e mysql

para criar menus complexos com vários níveis e submenus, uma abordagem comum envolve a utilização de uma estrutura de dados para organizar itens de menu. Nessas estruturas, os menus de nível superior normalmente têm um identificador pai de 0, enquanto os submenus recebem o ID do menu pai. Veja como fazer isso usando o php e o mysql:

mysql query:

selecione id, parent_id, nome, link, posição, posição, posição De menus_item Ordem por parent_id, posicionar;

SELECT id, parent_id, name, link, position
FROM menu_item
ORDER BY parent_id, position;

explicação:

O código php cria uma pilha para acompanhar os identificações do menu e os itens do menu ($ parent_stack).
$html = '';
$parent = 0; // Starting with the top-level menu
$parent_stack = array(); // Keeps track of parent menu IDs

// Map menu items by their parent ID
$children = array();
foreach ($items as $item) {
    $children[$item['parent_id']][] = $item;
}

while (
    // If there are more children at the current parent level
    ($option = each($children[$parent])) ||
    // Or if we need to backtrack to a previous parent level
    ($parent > 0)
) {
    if (!empty($option)) {
        // Handle menu items with children
        if (!empty($children[$option['value']['id']])) {
            $html .= '
  • ' . $option['value']['name'] . '
  • '; $html .= ''; $parent = array_pop($parent_stack); // Pop the last parent ID from the stack } } // Output the resulting HTML echo $html;
    O ID do pai atual é empurrado para a pilha, e o pai atual é definido para o ID do item de menu atual. Se a pilha não estiver vazia, o pai atual será retirado da pilha e o pai atual é definido como o ID do estouro.

    o loop continua até que todos os itens de menu tenham sido processados.

    Tutorial mais recente Mais>

    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