2015-11-17 4 views
0

У меня есть каталог, полный файлов, которые я пытаюсь выдать. Если файл является изображением, само изображение эхоподавляется. Если файл не является изображением, имя файла будет эхом.Как сортировать по дате с помощью PHP opendir()

Этот код ниже работает отлично, но я не могу получить порядок сортировки по дате. Файлы случайным образом повторяются.

Как я могу сделать так, чтобы файлы отсортировались по последнему измененному (последнее первое).

<?php 


$blacklist = array("index.php"); 
$ext = pathinfo($files, PATHINFO_EXTENSION); 

if ($handle = opendir('.')) { 

    $valid_image = array("jpg", "jpeg", "png", "gif"); 

    while (false !== ($entry = readdir($handle))) { 
     krsort($entry); 

     if ($entry != "." && $entry != ".." && !in_array($entry, $blacklist)) { 

      $exploded = explode('.', $entry); 

      if(in_array(end($exploded), $valid_image)) 
      { 
       echo "<div><h4>"; echo date('d F Y', filemtime($file)) . "</h4><a href='" . $entry . "'><img src='".$entry."'></a></div><hr>"; 
      } 
      else 
      { 
       echo "<div><h4>"; echo date('d F Y', filemtime($file)) . "</h4><a href='" . $entry . "'>" . $entry . "</a></div>"; 
      } 
     } 
    } 
    closedir($handle); 
} 
?> 
+1

фотографии http://stackoverflow.com/questions/2667065/sort-files-by-date-in-php – hassan

+0

Спасибо, но я не уверен, как это будет сделано в этом контексте –

ответ

0
// Create an empty array, outside your loop 
$files = array(); 

while (false !== ($entry = readdir($handle))) { 
    if(in_array(end($exploded), $valid_image)){ 

     // Instead of echoing the string, add it to the array, using filemtime as the array key 
     $files[filemtime($file)] = "<div><h4>".date('d F Y', filemtime($file)) . "</h4><a href='$entry'><img src='$entry'></a></div><hr>"; 

    } else... 
} 

// reverse sort on the array 
krsort($files);   

// output the array in a loop 
foreach($files as $file){ 
    echo $file; 
}