- 我需要获取数组中某个目录中的文件。
- 仅限以.markdown结尾的文件
- 文件应按创建日期排序
效率不是一个巨大的交易,但我总是喜欢让事情尽可能高效。将有多个目录,每个目录中最多有几百个文件。
我知道我使用scandir
函数将文件放入一个数组中,但我不确定该从哪里开始。我可以将其放入循环中,检查文件是否以.markdown
结尾,但是否有某种regex可以传递给扫描?
感谢
您可以使用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');
获取文件列表的最简单方法就是进行
$files = glob('*.markdown');
glob((基本上执行与shell提示相同的通配符匹配。
按日期排序将要求您查看每个具有stat()
的文件,并检索其mtime/ctime/atime值(fileatime((、filemtime((和filectime((直接返回,但仍在内部使用stat(((。