2009-07-02 8 views
5

Podemos obtener los archivos en un directorio en PHP por

$files = new DirectoryIterator() 

después de eso es que hay una manera fácil de ordenar los elementos en un orden determinado para la visualización de ellos? Gracias.

+0

@ 動靜 能量 - ¿Es usted chino? –

+2

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

Respuesta

9

No parece que haya una forma de ordenar los datos dentro del iterador.

Puede colocar los datos de visualización en una matriz intermedia, con una clave del valor que desea ordenar, y llamar a ksort() en la matriz. Sin embargo, esto tomará dos pasadas sobre los datos.

$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"; 
} 

edición:

si se coloca toda la información que desea salida para los archivos en los valores de la matriz, sólo tiene que implosionar() la matriz después, en lugar de bucle a través de los datos una vez de nuevo.

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

puede ser lo que está buscando, siempre, por supuesto, se puede aplicar la función de clasificación para ordenar los caminos dependiendo de su preferencia después de eso.

Cuestiones relacionadas