scandir () сортировать по дате изменения

Я пытаюсь сделать scandir(); функция выходит за пределы ее письменных ограничений, мне нужно больше, чем альфа-сортировка, которую он в настоящее время поддерживает. Мне нужно отсортировать scandir(); результаты сортируются по дате изменения.

Я пробовал несколько решений, которые я нашел здесь, и некоторые другие решения с разных сайтов, но никто не работал для меня, поэтому я считаю, что для меня целесообразно публиковать здесь.

То, что я пробовал до сих пор, заключается в следующем:

 function scan_dir($dir) { $files_array = scandir($dir); $img_array = array(); $img_dsort = array(); $final_array = array(); foreach($files_array as $file) { if(($file != ".") && ($file != "..") && ($file != ".svn") && ($file != ".htaccess")) { $img_array[] = $file; $img_dsort[] = filemtime($dir . '/' . $file); } } $merge_arrays = array_combine($img_dsort, $img_array); krsort($merge_arrays); foreach($merge_arrays as $key => $value) { $final_array[] = $value; } return (is_array($final_array)) ? $final_array : false; } 

Но, похоже, это не работает для меня, оно возвращает только 3 результата, но должно возвращать 16 результатов, потому что в папке 16 изображений.

Любая идея, как решить эту проблему?

Благодарю.

 function scan_dir($dir) { $ignored = array('.', '..', '.svn', '.htaccess'); $files = array(); foreach (scandir($dir) as $file) { if (in_array($file, $ignored)) continue; $files[$file] = filemtime($dir . '/' . $file); } arsort($files); $files = array_keys($files); return ($files) ? $files : false; } 

Я думаю, что проблема в вашем исходном коде – это несколько файлов, которые могут иметь такую ​​же дату и время изменения, поэтому при объединении массивов несколько файлов с одной и той же датой и временем изменения будут перезаписаны, и вы получите только одну запись в конечном массиве для этой метки времени ,

Альтернативный пример ..

 $dir = "/home/novayear/public_html/backups"; chdir($dir); array_multisort(array_map('filemtime', ($files = glob("*.{sql,php,7z}", GLOB_BRACE))), SORT_DESC, $files); foreach($files as $filename) { echo "<a>".substr($filename, 0, -4)."</a><br>"; }