dopo l'utilizzo di $ file = new DirectoryIterator () in PHP, come si fa a ordinare gli articoli?
Domanda
Possiamo ottenere i file in una directory in PHP da
$files = new DirectoryIterator()
dopo che c'è un modo semplice per ordinare gli elementi in un ordine particolare per la visualizzazione di loro? grazie.
Soluzione
Non sembra che ci sia un modo per ordinare i dati all'interno del iteratore.
È possibile inserire i dati di visualizzazione in una matrice intermedia, con una chiave del valore che si desidera eseguire l'ordinamento, e chiamare ksort () sulla matrice. Questo richiederà due passaggi sui dati comunque.
$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";
}
modifica:
se si inserisce tutte le informazioni che si desidera output per i file nei valori di matrice, si può semplicemente implodere () l'array in seguito, invece di loop attraverso i dati, ancora una volta.
Altri suggerimenti
$files = new DirectoryIterator($path);
$i = 0;
$paths = array();
while($files->valid()) {
$paths[$i++] = $files->getFileName();
$files->next();
}
sort($paths)
Può essere quello che stai cercando, è possibile applicare sempre, naturalmente, la funzione di ordinamento per ordinare i percorsi a seconda delle preferenze dopo.