Если более одного файла имеют одинаковое mtime, он перезапишет этот файл из вашего массива $OAR
. Вместо этого сохраните каждое значение в виде массива файлов для решения этой проблемы.
И это утверждение return explode(" * ", implode(" * ", $OAR ));
кажется, что его можно просто заменить на return array_values($OAR);
С упомянутой выше корректировкой, которую я упомянул, вам, возможно, придется перебрать массив $ OAR, переместить каждый набор значений в новый массив и вернуть вместо этого.
РЕДАКТИРОВАТЬ: вот пример.
function sortByDate($filearray){
$OAR = array();
$sorted = array();
foreach($filearray as $item){
$mtime = filemtime($item);
if (!isset($OAR[$mtime])) $OAR[$mtime] = array();
$OAR[$mtime][] = $item; // push $item to the array for this mtime
}
ksort($OAR);
foreach($OAR as $key => $values) {
if (sizeof($values) > 1) sort($values); // sort by name
foreach($values as $file) {
$return[] = $file;
}
}
return $return;
}