效率不是巨大的交易,但我总是希望尽可能提高效率。将有多个目录,每个目录中最多有几百个文件。
我知道我使用scandir
函数将文件放入数组中,但我不确定从那里开始。我可以把它放在一个循环中来检查文件是否以.markdown
结尾,但是我可以传入某种正则表达式进行扫描吗?
由于
答案 0 :(得分:9)
您可以使用glob()
获取一系列文件名,然后使用usort()
和filectime()
按照创建日期对其进行排序:
$files = glob('*.markdown');
usort($files, function($file_1, $file_2)
{
$file_1 = filectime($file_1);
$file_2 = filectime($file_2);
if($file_1 == $file_2)
{
return 0;
}
return $file_1 < $file_2 ? 1 : -1;
});
对于低于5.3的PHP版本:
function sortByCreationTime($file_1, $file_2)
{
$file_1 = filectime($file_1);
$file_2 = filectime($file_2);
if($file_1 == $file_2)
{
return 0;
}
return $file_1 < $file_2 ? 1 : -1;
}
$files = glob('*.markdown');
usort($files, 'sortByCreationTime');
答案 1 :(得分:0)
获取文件列表的最简单方法就是
$files = glob('*.markdown');
glob()基本上执行与shell提示符相同的通配符匹配。
按日期排序将要求您使用stat()
查看每个文件并检索其mtime / ctime / atime值(fileatime(),filemtime(),filectime()直接返回,但仍然使用stat()内部)。