2017-07-04 5 views
0

Je crée une galerie d'images et j'aimerais que mes images les plus récentes soient placées devant.Comment obtenir des fichiers image à partir d'un répertoire et commander par dernière modification?

C'est ce que j'ai actuellement:

$files = glob("images/*.*"); 
for ($i=0; $i<count($files); $i++) { 
    $image = $files[$i]; 
    $supported_file = array('gif','jpg','jpeg','png'); 

    $ext = strtolower(pathinfo($image, PATHINFO_EXTENSION)); 
    if (in_array($ext, $supported_file)) { 
     echo basename($image)."<br />"; // show only image name if you want to show full path then use this code // echo $image."<br />"; 
     echo '<img src="'.$image .'" alt="Random image" />'."<br /><br />"; 
    } else { 
     continue; 
    } 
} 

Mais je ne suis pas sûr de savoir comment faire afficher dans l'ordre de dernière téléchargé.

+0

Vous aurez besoin d'une solution entièrement différente, probablement basée sur un itérateur de fichiers. Mon conseil est d'utiliser le composant finder de symfony, qui a déjà un certain nombre de tri intégré. Voir https://symfony.com/doc/current/components/finder.html – gview

+0

Deux méthodes de tri sont déjà intégrées: sortByChangedTime() et sortByModifiedTime() – gview

+0

utilisez http://php.net/manual/fr/function.filemtime.php pour créer un tableau d'éléments où key est filename et value est un horodatage reformaté, puis 'rsort()' travailler pour vous? – mickmackusa

Répondre

2
$files = glob("*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}",GLOB_BRACE); 
$sorted_files=array(); /* a new array that have modification time as values 
and files as keys the purpose is to sort files according to the values in reverse order */ 
foreach ($files as $file) 
{ 
    $sorted_files[$file]=filemtime($file); 
} 
arsort($sorted_files); 
foreach ($sorted_files as $image=>$mtime) 
{   
    echo basename($image)."<br />"; // show only image name if you want to show full path then use this code // echo $image."<br />"; 
    echo '<img src="'.$image .'" alt="Random image" />'."<br /><br />"; 
} 
+0

oui, j'ai fait, pas besoin de reformater l'expression datetime car elle sera comparée comme nombre entier , oui je suis d'accord pour les valeurs en tant que clés, je vais éditer cette – user10089632