我有一个包含1245.jpg 123456.jpg 23435.jpg 99.jpg等文件的目录。
如果我只使用opendir(),则数组中的文件按字母顺序排序,但我希望文件按其名称所基于的数字顺序排序。
,即上述集合的字母顺序是 123456 1245 2345 99
然而,数字排序会给出 99 1245 2345 123456
有一种简单的方法吗?
答案 0 :(得分:3)
最简单的方法是将整个文件名列表读入数组并直接在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);
答案 1 :(得分:1)
一旦文件在数组中,就可以轻松使用sort()。
foreach (glob("folder/*.jpg") as $filename) {
$files[] = $filename;
}
sort($files, SORT_NUMERIC);
print_r($files);
答案 2 :(得分:0)
为什么不将目录中的所有文件名都读成数组 - 然后根据需要对数组进行排序?