2010-02-23 4 views
0

J'ai besoin du tableau suivant dans l'ordre alphabétique (à tous les niveaux), mais asort ne semble pas fonctionner parce que j'ai un appel récursif dans ma fonction (ou du moins je pense); il ne fait que trier partiellement mon tableau, donc j'en aurai des morceaux qui sont classés par ordre alphabétique, mais ils seront hors service.Trier un tableau avec un appel de fonction récursif?

Aide!

Ex. Répertoire alphabétique:

apartments.html 
js/ 
    application.js 
    jquery.js 
    something.js 
css/ 
    reset.css 
    master.css 
preview.html 
ab_restaurant_at_the_end_of_the_universe.jpg 

sortie souhaitée:

array() { 
    [0] => string() "ab_restaurant_at_the_end_of_the_universe.jpg" 
    [1] => string() "apartments.html" 
    ["css"] => array() { 
    [0] => string() "master.css" 
    [1] => string() "reset.css" 
    } 
    ["js"] => array() { 
    [0] => string() "application.js" 
    [1] => string() "jquery.js" 
    [2] => string() "something.js" 
    } 
    [2] => string() "preview.html" 
} 

function directory_list($directory) { 
    $files = array(); 
    if (is_dir($directory)) { 
     if ($curr_dir = opendir($directory)) { 
     while (false !== ($file = readdir($curr_dir))) { 
     if ($file != "." && $file != ".." && $file != "apartment" && $file != "blog") { 
     if (is_dir($directory. "/" . $file)) { 
      $files[$file] = directory_list($directory. "/" . $file); 
     } else { 
     $files[] = $file; 
     } 
     } 
     } 
     closedir($curr_dir); 
    } 
    } 
    //asort($files); <-- doesn't work; sorts, but interrupts itself because of self-referencing call above (I think) 
    return $files; 
    } 
+0

Pouvez-vous mettre à jour votre question pour inclure un exemple de liste de répertoires et la sortie attendue? – hobodave

+0

-1 pour ne pas fournir les informations demandées. – hobodave

+0

Exemple de sortie supplémentaire. – neezer

Répondre

1

Si vous changez $files[] = $file; à $files[$file] = $file;, vous pouvez utiliser ksort() où vous avez essayé d'utiliser asort()

+0

Merci! Cela fonctionne parfaitement! – neezer