Heim > Datenbank > MySQL-Tutorial > Wie erhalte ich mit PHP alle untergeordneten und untergeordneten Knoten für ein übergeordnetes Element in MySQL?

Wie erhalte ich mit PHP alle untergeordneten und untergeordneten Knoten für ein übergeordnetes Element in MySQL?

Barbara Streisand
Freigeben: 2024-11-07 02:13:02
Original
747 Leute haben es durchsucht

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

Alle untergeordneten, untergeordneten usw. Knoten unter dem übergeordneten Knoten mithilfe von PHP mit MySQL-Abfrageergebnissen abrufen

Dieser Artikel führt Sie durch eine Methode zum Abrufen aller untergeordneten und untergeordneten Knoten für ein bestimmtes übergeordnetes Element unter Verwendung von PHP mit MySQL-Abfrageergebnissen. Durch diese Technik entfällt die Notwendigkeit, ein mehrdimensionales Array der Baumstruktur zu erstellen, und Sie können alle Knoten direkt abrufen.

Stellen Sie sich eine MySQL-Tabelle vor, die als Adjazenzliste organisiert ist, in der Hierarchiedaten durch Spalten für ID und Name dargestellt werden und parent_id. Die folgende SQL-Abfrage kann alle Zeilen aus dieser Tabelle in ein assoziatives Array abrufen:

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

Angenommen, wir möchten dieses Array nach Knoten unter einem übergeordneten Knoten mit der ID 3 filtern, einschließlich des übergeordneten Knotens selbst. Diese benutzerdefinierte fetch_recursive-Funktion kann Folgendes erreichen:

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;
}
Nach dem Login kopieren

Um diese Funktion zu verwenden, übergeben Sie das aus der Abfrage erhaltene $data-Array als erstes Argument und die ID des übergeordneten Knotens, für den Sie die untergeordneten Knoten abrufen möchten das zweite Argument:

$list = fetch_recursive($data, 3);
Nach dem Login kopieren

$list enthält jetzt ein assoziatives Array mit allen untergeordneten Knoten und dem übergeordneten Knoten (ID 3).

Diese Lösung ruft alle untergeordneten und untergeordneten Knoten effizient ab für ein bestimmtes übergeordnetes Element, ohne dass eine mehrdimensionale Baumstrukturkonstruktion erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie erhalte ich mit PHP alle untergeordneten und untergeordneten Knoten für ein übergeordnetes Element in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage