Ich habe versucht, das herauszufinden, aber ich bin nirgendwohin gekommen. Hoffentlich kann jemand zu meiner Rettung kommen.
Mein Problem ist, dass ich das Adjazenzlisten-Datenmodell verwende, um meine Hierarchiedaten in mysql zu erzeugen. Ich kann die Tabelle (siehe unten) in ein Multidimension-Array mit assoziativem Array für jedes Element zurückholen. Was ich tun möchte, ist, sobald ich dieses Array bekomme, möchte ich ein anderes Array mit allen Knoten (Kind, Enkel usw.) unter einer Eltern-ID (einschließlich der Eltern-Artikel) bekommen. Ich kann einfach nicht trainieren, wie man Tihs einprogrammiert php.
In MySQL erscheint meine Tabelle wie folgt:
%Vor%Ich kann alle Zeilen mit diesem Code in einem assoziativen Array mit diesem abfragen.
%Vor%Erhält Ergebnisse:
%Vor%Mit diesen Ergebnissen möchte ich es mit einer ID filtern.
Sagen Sie zum Beispiel, ich wollte ein assoziatives Array von jedem Knoten unter Portable Electronics mit der ID 3. (ID für den Code verwenden)
Es würde ein Array mit Zeilen mit IDs zurückgegeben:
Wenn Flash Kinder hatte, würde es auch diese zurückgeben.
Also würde das Endergebnis ein Array wie das obige aber nur mit diesen Elementen zurückgeben.
Bitte beachten Sie: Ich bin nicht nach einer Funktion, die ein Multidimension-Array der Baumstruktur erstellt (bereits eine Lösung dafür) .Ich möchte eine Funktion erstellen: fetch_recursive ($ ID), die eine ID erhält und alle Elemente in dieser Ebene und zurückgibt in den Ebenen unter etc etc.
Hoffe, das hilft
Vielen Dank im Voraus
Ich hatte zuvor eine Lösung gepostet, um ein mehrdimensionales Array aus der Ausgabe zu erstellen, die Sie angegeben haben, sowie eine Möglichkeit, alle untergeordneten Elemente einer bestimmten id
aus diesem bestimmten Array herauszuholen. Ich habe jetzt herausgefunden, wie man die untergeordneten Elemente direkt von der Ausgabe abruft (ohne zuerst eine Funktion buildtree()
durchlaufen zu müssen:
Um die obige Funktion zu verwenden, übergeben Sie einfach das Ausgabe-Array $data
an das erste Argument und das id
, an dem Sie die untergeordneten Elemente abrufen möchten, im zweiten Argument:
Beispiel:
%Vor% Was Ihnen die richtige Array-Struktur für id
3
geben sollte (wie im Beispiel in der letzten Codebox zu dieser Antwort zu sehen).
Ursprüngliche Antwort:
Ich war noch nie dazu gekommen, eine rekursive Funktion zu schreiben, um bisher verschachtelte Bäume aus diesem Design zu bauen. Ich bin mir sicher, es gibt viele andere, die ähnliche Funktionen geschrieben haben, aber diese sollte auf jeden Fall für Sie arbeiten:
%Vor% Diese Funktion wird rekursiv einen Baum aus einer Adjazenzliste erstellen und die IDs in aufsteigender Reihenfolge geordnet halten. Dies macht auch die id
aller Eltern / Kinder zum Schlüssel jedes Informationsfeldes.
Dieser Code:
%Vor%Gibt etwas wie folgt aus:
%Vor% Um alle untergeordneten Knoten eines bestimmten id
auf ein eindimensionales Array zu bekommen, können Sie diese Funktion verwenden:
Ausgehend von der obigen Funktion buildtree()
möchten wir sagen, dass wir alle untergeordneten Knoten von id
3:
Dies wird ausgegeben:
%Vor%