С приведенным ниже кодом я создаю список pdf-файлов, расположенных в каталоге на моем сервере. Я бы хотел, чтобы результаты сортировались по дате, самые последние первые самые старые.
Здесь он находится в действии: http://mt-spacehosting.com/fisheries/plans/northeast-multispecies/
<?php $sub = ($_GET['dir']); $path = 'groundfish-meetings/'; $path = $path . "$sub"; $dh = opendir($path); $i=1; while (($file = readdir($dh)) !== false) { if($file != "." && $file != "..") { if (substr($file, -4, -3) =="."){ echo "$i. <option value='" . home_url('/groundfish-meetings/' . $file) . "'>$file</option>"; } $i++; } } closedir($dh); ?> </select>
Любая помощь будет оценена по достоинству.
Вы можете использовать функцию glob PHP и настраиваемую функцию сортировки следующим образом:
<?php $sub = ($_GET['dir']); $path = 'groundfish-meetings/'; $path = $path . "$sub"; $file_list = glob($path."*.pdf"); function sort_by_mtime($file1,$file2) { $time1 = filemtime($file1); $time2 = filemtime($file2); if ($time1 == $time2) { return 0; } return ($time1 < $time2) ? 1 : -1; } usort($file_list ,"sort_by_mtime"); $i = 1; foreach($file_list as $file) { echo "$i. <option value='" . home_url('/groundfish-meetings/' . $file) . "'>$file</option>"; $i++; }
Это позволило бы получить все файлы в пути / в / в качестве массива, а затем отсортировать этот массив по mtime файла
$files = glob('path/to/files/*.*'); usort($files, function($a, $b) { return filemtime($a) < filemtime($b); });