"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 > Como obter todos os nós filhos e descendentes de um pai no MySQL usando PHP?

Como obter todos os nós filhos e descendentes de um pai no MySQL usando PHP?

Publicado em 2024-11-09
Navegar:787

How to Get All Child and Descendant Nodes for a Parent in MySQL Using PHP?

Obtenha todos os nós filhos, netos, etc. sob o pai usando PHP com resultados de consulta MySQL

Este artigo irá guiá-lo através de um método para recuperar todos os nós filhos e descendentes para um pai especificado usando PHP com resultados de consulta MySQL. Esta técnica elimina a necessidade de construir um array multidimensional da estrutura em árvore e permite obter todos os nós diretamente.

Considere uma tabela MySQL organizada como uma lista de adjacências, onde os dados da hierarquia são representados com colunas para id, nome e parent_id. A seguinte consulta SQL pode recuperar todas as linhas desta tabela em um array associativo:

$r = mysql_query("SELECT * FROM test ");
$data = array();
while($row = mysql_fetch_assoc($r)) {
  $data[] = $row;
}

Vamos supor que queremos filtrar esse array para nós sob um pai com id 3, incluindo o próprio pai. Esta função fetch_recursive personalizada pode fazer isso:

function fetch_recursive($src_arr, $currentid, $parentfound = false, $cats = array()) {
  foreach($src_arr as $row) {
    if((!$parentfound && $row['id'] == $currentid) || $row['parent_id'] == $currentid) {
      $rowdata = array();
      foreach($row as $k => $v)
        $rowdata[$k] = $v;
      $cats[] = $rowdata;
      if($row['parent_id'] == $currentid)
        $cats = array_merge($cats, fetch_recursive($src_arr, $row['id'], true));
    }
  }
  return $cats;
}

Para usar esta função, passe o array $data obtido da consulta como o primeiro argumento e o ID do pai para o qual deseja recuperar os nós filhos como o segundo argumento:

$list = fetch_recursive($data, 3);

$list agora conterá um array associativo com todos os nós filhos e o nó pai (id 3) incluído.

Esta solução recupera com eficiência todos os nós filhos e descendentes de um pai especificado sem a necessidade de construção de estrutura de árvore multidimensional.

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