Gunther: Über Array iterien und Unterarrays sortieren

Beitrag lesen

Hallo lieber Felix,

Frage: Wie baue ich eine entsprechende Schleife/ Rekursion, sodass ich jedes enthaltene descendants-Array mit meiner Sortierfunktion sortiert bekomme?

Also der "Prototyp" eines Arrays sieht doch anscheinend so aus:

array

(
    [id] =>  {string}
    [level] => {positive Integer-Zahl}
    [filetype] => {Buchstabe}
    [name] => {string}
    [title] => Array
        (
            [0] => {string}
            [1] => {string}
            [2] => {string}
        )

[sort] =>  {string}
    [descendants] => array({weiteres array dieses typs}, {weiteres array dieses typs}, ...)
)


>   
> Was Du eigentlich sortieren möchtest, ist doch der Index "descendants", oder? Dann brauchst Du zwei Ansätze:  
> 1.) sortiere das root-Array (hat den Aufbau wie der "Prototyp") mittels  
>     usort():  
>     - schnappe den index "descendants" und sortiere ihn als eigenes Array  
>       mittels einer weiteren Callback-Funktion (2.)  
>     - lasse alle anderen Indices unangetastet!  
> 2.) sortiere ein [descendants]-Array mittels usort()  
>     - sollte die Callback-Funktion im Unter-Array weitere descendants  
>       finden, so sortiert sie diese mittels usort() und der Callbackfunktion  
>       in 1.)  
>     - die Callback-Funktion untersucht das jeweilige Unter-Array und liefert  
>       den typischen Rückgabe-Wert.  
>   
> 3.) Dadurch hast Du nun Rekursion.  
>   
> Noch Fragen?  
  
Ja ;). Ich habe folgendes probiert:  
  
~~~php
  
$mein_ausgangs_array = sort_array($mein_ausgangs_array);  
  
function sort_array($arraytosort) {  
  usort($arraytosort, "gp_sort_dirsandfiles");  
  foreach($arraytosort as $key => $val) {  
    if($key == 'descendants' && count($val) > 1) $val = sort_array($val);  
  }  
  return $arraytosort;  
}  

Das sortiert mir aber nur die oberste Ebene in meinem Array.
Ich kapier bei diesem (Array-)Konstrukt nicht, wie ich jeweils die Unterarrays (also die 'descendants') referenzieren muss, damit am Schluss mein komplettes Ausgangsarray sortiert ist.

Wenn du mir noch ein wenig weiterhelfen könntest, wäre ich dir sehr dankbar!

Gruß Gunther