scandir()按修改datesorting

我试图做scandir(); 函数超出了它的书面限制,我需要的不仅仅是它目前支持的alphasorting。 我需要sortingscandir(); 结果按修改datesorting。

我尝试了一些我在这里find的解决scheme,以及来自不同网站的一些其他解决scheme,但是没有一个适合我,所以我觉得我在这里发布是合理的。

我迄今为止所尝试的是:

 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; } 

我认为在你的原始代码中的问题是多个文件可能具有相同的修改date/时间,因此当组合数组时,具有相同修改的多个文件条目将被覆盖,并且在该最后一个数组中只有一个条目用于该时间戳。

另一个例子..

 $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>"; }