Сортировка динамически извлекаемых файлов
Я пытаюсь динамически загружать файлы из каталога, а затем сортировать их по порядку по месяцам. Начиная с июля, а затем до июня.
Вот то, что я до сих пор -
function monthCompare($a, $b) {
$a = strtolower($a);
$b = strtolower($b);
$months = array(
'July' => 1,
'August' => 2,
'September' => 3,
'October' => 4,
'November' => 5,
'December' => 6,
'January' => 7,
'February' => 8,
'March' => 9,
'April' => 10,
'May' => 11,
'June' =>12,
);
if($a == $b)
return 0;
if(!isset($months[$a]) || !isset($months[$b]))
return $a > $b;
return ($months[$a] > $months[$b]) ? 1 : -1;
}
usort($filearray, "monthCompare");
Вот код, который я думаю, не работает.
Спасибо
Эти файлы представляют собой минуты, а их формат имени - "месяц-день-год".
Эти файлы могут быть изменены в любое время кем угодно
Он считает, что есть проблемы с тем, как он использует функцию usort
2 ответа
Используйте функцию filectime. В Unix эта функция вернет вам дату последнего времени изменения файла (хотя это важно, потому что в Windows это вернет вам время создания файла). Вы можете использовать эту функцию для сортировки файлов по времени их изменения, что будет работать для ваших заметок текстов.
Как насчет преобразования имени файла в метки времени Unix и сортировки по нему? Как это:
$files = array('january-25-2012.pdf', 'february-2-2012.pdf');
$sorted_array = array();
foreach($files as $key => $file) {
$name = explode(".", $file);
$nix_date = strtotime($name[0]); // turn to unix timestamp
$sorted_array[$nix_date] = $name[0];
}
// sort by keys
ksort($sorted_array);
Приведет к:
array(2) {
[1327522320] => string(15) "january-25-2012"
[1328213520] => string(15) "february-2-2012"
}