scandir() to sort by date modified
arrays, php, scandir, sorting
Solution
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;
}
Problem
I'm trying to make `scandir();` function go beyond its written limits, I need more than the alpha sorting it currently supports. I need to sort the `scandir();` results to be sorted by modification date. I've tried a few solutions I found here and some other solutions from different websites, but none worked for me, so I think it's reasonable for me to post here. What I've tried so far is this: ``` 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; } ``` But, this doesn't seem to work for me, it returns 3 results only, but it should return 16 results, because there are 16 images in the folder.