2010-01-02 8 views
0

J'ai le code suivant qui affiche le contenu des fichiers texte contenus dans un répertoire. J'ai vu la commande sort en PHP mais je n'arrive pas à l'utiliser avec le code suivant, j'ai l'habitude d'avoir une erreur sur l'entrée étant une chaîne et non un tableau.Convertir en tableau pour trier

Comment puis-je trier le répertoire du fichier avant sa sortie?

$directory = "polls/"; 
    $dir = opendir($directory); 


    while (($file = readdir($dir)) !== false) { 

     $filename = $directory . $file; 
     $type = filetype($filename); 
     if ($type == 'file') { 
     $contents = file_get_contents($filename); 
     list($tag, $name, $description, $text1, $text2, $text3, $date) = explode('¬', $contents); 

     echo '<table width="500" border="1" cellpadding="4">'; 
     echo "<tr><td>$tag</td></tr>\n"; 
     echo "<tr><td>$name</td></tr>\n"; 
     echo "<tr><td>$description</td></tr>\n"; 
     echo "<tr><td>$text1</td></tr>\n"; 
     echo "<tr><td>$text2</td></tr>\n"; 
     echo "<tr><td>$text3</td></tr>\n"; 
     echo "<tr><td>$date</td></tr>\n"; 
     echo '</table>'; 

     } 
    } 
    closedir($dir); 

Répondre

1

Une autre possibilité est la récupération des noms de fichiers avec glob(). Sa sortie est triée par défaut. J'ai changé le type à: sort ($ files, SORT_NUMERIC);

<?php 

foreach(glob('polls/*.txt') as $file){ 
    // ... 
} 

?> 
3

d'abord recueillir les entrées dans un tableau, les trier, puis le mettre hors:

$directory = "polls/"; 
$dir = opendir($directory); 
$files = array(); 
while (($file = readdir($dir)) !== false) { 
    $files[] = $file; 
} 
closedir($dir); 
sort($files); 

foreach ($files as $file) { 
    // content of your original while loop 
} 
+0

comme les fichiers sont tous nommés numériquement. – CLiown

0

Ne pas imprimer dans la boucle while, mais la stocker dans un tableau. Triez le tableau et imprimez-le.

(Sur php.net vous trouverez assez différentes fonctions de tri pour obtenir la méthode de tri dont vous avez besoin.)