2009-07-02 9 views
5

Możemy dostać plików w katalogu w PHP przez

$files = new DirectoryIterator() 

po to istnieje prosty sposób aby posortować elementy w określonej kolejności do ich wyświetlania? dzięki.

+0

@ 動靜 能量 - Czy jesteś chiński? –

+2

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

Odpowiedz

9

Nie wygląda na to, że istnieje sposób sortowania danych w iteratorze.

Możesz umieścić dane wyświetlacza w pośredniczącej tablicy, z kluczem wartości, którą chcesz posortować, i wywołać ksort() w tablicy. To zajmie jednak dwa podania danych.

$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:

jeśli umieścisz wszystkie informacje, które chcesz wstawić do plików w wartości tablicy, można po prostu implozji() tablica potem, zamiast pętli przez dane raz jeszcze raz.

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

Może być tym, czego szukasz, możesz oczywiście zastosować funkcję sortowania, aby posortować ścieżki w zależności od preferencji.

Powiązane problemy