echo $begrüßung;
Trotzdem wurmt mich das, dass ich es anders nicht hinbekommen habe. Wenn einer ein gutes Tutorial bezüglich Iteration und Rekursion im Bezug auf Arrays in PHP kennt, wäre es nett, wenn er den Link posten würde - Danke!
Du hast es doch schon fast hinbekommen gehabt.
$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;
}
>
> $val ist eine Kopie. Das Original ist $arraytosort[$key]. Da muss das Ergebnis von sort\_array($val) rein. Also statt
>
> $val = sort\_array($val);
>
> schreibst du
>
> $arraytosort[$key] = sort\_array($val);
>
> und alles wird gut.
>
> > Auch die Sache mit der Referenz in PHP 5 muss ich mir mal genauer anschauen.
>
> Das ist recht einfach. Bei foreach($array as $key => $val) setzt man vor das $val ein & und damit ist $val eine Referenz auf $array[$key]. (Das "$key =>" kann man auch weglassen, wenn man den Schlüssel, anders als in deinem Fall, nicht benötigt.)
>
Also nachdem ich es heute morgen dann ja schon geschafft hatte, die Sortierung direkt bei der Erstellung des Arrays vorzunehmen, habe ich es jetzt auch geschafft, das fertige Array zu sortieren.
~~~php
$dircount = count($mein_ausgangs_array);
for($i=0; $i<$dircount; $i++) {
if($mein_ausgangs_array[$i]['filetype'] == 'd' && $mein_ausgangs_array[$i]['desc']) $mein_ausgangs_array[$i]['desc'] = sort_array($mein_ausgangs_array[$i]['desc']);
}
function sort_array(&$arraytosort) {
if(!is_array($arraytosort) || !count($arraytosort)) return;
uasort($arraytosort, "gp_sort_dirsandfiles");
if($conf['navmenu']['dirsbeforefiles']) usort($arraytosort, "gp_sort_dirsbeforefiles");
foreach($arraytosort as $key => $val) {
if($arraytosort[$key]['desc']) $arraytosort[$key]['desc'] = sort_array($arraytosort[$key]['desc']);
}
return $arraytosort;
}
Das funktioniert jetzt zumindest mit PHP 5 wie gewünscht, da ich der Funktion sort_array ja jetzt eine Referenz auf das originale Ausgangsarray übergebe.
Wie könnte ich das denn jetzt noch so umschreiben, dass es zumindest auch mit PHP 4 funktioniert?
Mühsam ernährt sich das Eichhörnchen - zwar langsam, aber dafür sicher, geht es voran.
Vielen dank nochmal für eure bisherige Hilfe, wobei manchmal so eine Codezeile wie hier von dedlfix gepostet, wesentlich mehr beim Verstehen hilft, als tausend Worte ;).
Gruß Gunther
PS: Ist eigentlich die "Mail bei Antwort" Funktion hier im Forum kaputt (oder liegt es vielleicht doch an meinem Junkfilter!?)? Ich erhalte nämlich keine Benachrichtigungen.