2009-07-02 7 views
5

Wir können die Dateien in einem Verzeichnis in PHP bekommen von

$files = new DirectoryIterator() 

danach ist es eine einfache Möglichkeit zum Anzeigen von ihnen die Elemente in einer bestimmten Reihenfolge zu sortieren? Vielen Dank.

+0

@ 動靜 能量 - Sind Sie chinesisch? –

+2

[salathe/spl-examples - Sortier-Iteratoren] (https://github.com/salathe/spl-examples/wiki/Sorting-Iterators) – hakre

Antwort

9

Es sieht nicht so aus, als gäbe es eine Möglichkeit, die Daten im Iterator zu sortieren.

Sie können die Anzeigedaten in ein intermediäres Array mit einem Schlüssel des Werts, nach dem sortiert werden soll, platzieren und ksort() für das Array aufrufen. Dies erfordert jedoch zwei Durchgänge über die Daten.

$path = "."; 
$files = new DirectoryIterator($path); 
$files_array = array(); 

while($files->valid()) { 
     // sort key, ie. modified timestamp 
     $key = $files->getMTime(); 
     $data = $files->getFilename(); 
     $files_array[$key] = $data; 
     $files->next(); 
} 
ksort($files_array); 
foreach($files_array as $key => $file){ 
    print $key . " => " . $file . "\n"; 
} 

edit:

, wenn Sie alle Informationen platzieren, die Sie für die Dateien in den Array-Werte ausgeben möchten, können Sie einfach implodieren() das Array danach, statt einmal durch die Daten looping nochmal.

-4
$files = new DirectoryIterator($path); 
$i = 0; 
$paths = array(); 
while($files->valid()) { 
    $paths[$i++] = $files->getFileName(); 
    $files->next(); 
} 
sort($paths) 

Kann das sein, was Sie suchen, können Sie immer natürlich die Sortierfunktion anwenden, um die Pfade zu sortieren nach Vorliebe danach abhängig.