2009-03-15 15 views
1

je dois trier un tableau multidimensionnel qui représente la structure du système de fichiers:Trier un tableau multidimensionnel

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 
         ) 

       ) 

     ) 

) 

Je ne sais pas quel est l'algorithme.

+0

Comment Voulez-vous qu'il soit trié? – Gumbo

Répondre

3

http://php.net/sort#51088

remplacer tri ($ a) au début de la fonction mulsort par ksort ($ a)

EDIT: Désolé, il suffit de changer le code mulsort à:

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

Merci beaucoup! Fonctionne parfaitement! –

+0

Eh bien, vous aurez un problème avec les répertoires ou les fichiers car vous devez utiliser des algorithmes différents pour les deux (ksort pour les répertoires, tri pour les fichiers). IMO, les meilleures options si faire des tableaux de tableaux plus comme "filename" => true plutôt que 0 => "filename" et appliquer le mulsort que je viens de mettre. –