2009-03-15 38 views
1

Ich brauche ein mehrdimensionales Array zu sortieren, die Dateisystemstruktur darstellt:Sortieren ein mehrdimensionales Array

Array 
(
    [dir1] => Array 
     (
      [dir2] => Array 
       (
        [dir3] => Array 
         (
          [dir4] => Array 
           (
            [0] => file1.php 
            [1] => abc.php 
           ) 

         ) 

        [0] => file2.php 
        [1] => abc.php 
       ) 

     ) 

    [abc] => Array 
     (
      [abc] => Array 
       (
        [abc] => Array 
         (
          [0] => file5.php 
         ) 

       ) 

     ) 

) 

Ich habe keine Ahnung, was der Algorithmus ist.

+0

Wie willst du es sortiert haben? – Gumbo

Antwort

3

http://php.net/sort#51088

ersetzen sort ($ a) zu Beginn der mulsort Funktion von ksort (a $)

EDIT: sorry, nur den mulsort ändern Code:

function mulsort(&$a) 
{ 
ksort($a); 
foreach($a as &$value) 
    if (is_array($value)) 
     mulsort($value); 
} 
+0

Vielen Dank! Funktioniert perfekt! –

+0

Nun, Sie werden ein Problem mit Verzeichnissen oder Dateien haben, weil Sie für diese zwei verschiedene Algorithmen verwenden müssen (ksort für die Verzeichnissebene, nach Dateien sortieren). IMO, die besten Optionen, wenn man Arrays mehr wie "filename" => true anstatt 0 => "filename" macht und den Mulsort anwendet, den ich gerade gesetzt habe. –

Verwandte Themen