我正在尝试从目录中动态加载文件,然后按月份顺序对它们进行排序。 从7月开始,然后到6月。
这是我目前所拥有的——
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的方式存在问题。
使用函数 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);
Will result in:
array(2) {
[1327522320] => string(15) "january-25-2012"
[1328213520] => string(15) "february-2-2012"
}