PHP按时间顺序获取目录中的文件


PHP fetch files in directory in chronological order

我有一个目录,里面有1245.jpg 123456.jpg 23435.jpg 99.jpg等文件。

如果我只使用opendir(),数组中的文件按字母顺序排序,但我希望文件按名称所基于的数字顺序排序。

即上述集合的字母顺序为1234561245234599

而数字排序会给出9912452345123456

有简单的方法吗??

最简单的方法是将整个文件名列表读取到一个数组中,并直接在php中对其进行排序,然后再处理文件。

$directory = "/path/to/the/directory";
$filenames = array();
$iterator = new DirectoryIterator($directory);
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        $filenames[] = (int)$fileinfo->getBasename('.jpg');
    }
}
sort($filenames);
print_r($filenames);

一旦文件在数组中,就很容易使用sort()。

foreach (glob("folder/*.jpg") as $filename) {
    $files[] = $filename;
}
sort($files, SORT_NUMERIC);
print_r($files);

为什么不直接将目录中的所有文件名读取到一个数组中,然后根据需要对数组进行排序?