dopo l'utilizzo di $ file = new DirectoryIterator () in PHP, come si fa a ordinare gli articoli?

StackOverflow https://stackoverflow.com/questions/1076881

  •  21-08-2019
  •  | 
  •  

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top