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