我有一个目录,里面有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);
为什么不直接将目录中的所有文件名读取到一个数组中,然后根据需要对数组进行排序?