Hallo,
zuerst mal vielen Dank für diese ausführliche Beschreibung!
Im Vertrauen darauf, dass das sicher sauberer gelöst ist, als meine Variante ... schon der Kommentare wegen ;) ... werde ich das zur Übung umsetzen. Allerdings muss ich gestehen, dass ich drei Dinge, die mir nicht klar sind:
die beiden Elemente [1] und [2700] haben faktisch eine Wurzel [0] und ich könnte daher auch ein Array (0=>array(1=>..., 2700=>...)) an die Funktion übergeben. Inwiefern würde das die Sache vereinfachen?
Mein Array 'vorher' ist aus einem flacheren 'nochdavon' entstanden, dass in etwa so aussah:
Array
(
[0] => Array
(
[site_id] => 1
[parent_id] => 0
[link_title] => Home
)
[1] => Array
(
[site_id] => 137
[parent_id] => 1
[link_title] => <freie Seiten>
)
[2] => Array
(
[site_id] => 149
[parent_id] => 137
[link_title] => Newsletter
)
[3] => Array
(
[site_id] => 2503
[parent_id] => 1
[link_title] => Footer
)
[4] => Array
(
[site_id] => 138
[parent_id] => 2503
[link_title] => Impressum
)
[5] => Array
(
[site_id] => 139
[parent_id] => 2503
[link_title] => Datenschutz
)
[6] => Array
(
[site_id] => 2700
[parent_id] => 0
[link_title] => Aufgaben
)
)
... und im ersten Schritt in das Array 'vorher' umgewandendelt wurde, um daraus ein Array 'nachher', dass Informationen über die Struktur enthält, machen zu können. Diese Informationen sind zum Einen die Reihenfolge der Elemente und zum Anderen die Tiefe, die ich mit 3 Leezeichen darstelle. Jetzt benötige ich nicht mehr nur die Tiefe, sondern den ganzen Pfad bis zur Wurzel als Element. Kommt man dann wohl immernoch ohne global definiertes array aus?
Beseitigen der Rekursion überlasse ich Dir ebenfalls gern zur Übung ...
Wie soll ich das verstehen?
Zugegeben, der Weg erst aus einem zweidimensionale Array ein tief verschachteltes zu machen, um dass dann wieder auf zwei Dimensionen zu reduzieren, kann einem schon komisch vorkommen, aber es ist der einzige Weg, den ich gefunden habe, um alle Datensätze meiner in der DB gespeicherten Parent/Child-Struktur auf einmal auszulesen, um die Struktur des Baums im Ganzen darstellen und so auf rekursive Select-Statements verzichten zu können.
beste gruesse,
heinetz