5

我们可以通过以下方式获取 PHP 目录中的文件

$files = new DirectoryIterator() 

之后有没有一种简单的方法可以按特定顺序对项目进行排序以显示它们?谢谢。

4

2 回答 2

9

看起来没有办法在迭代器中对数据进行排序。

您可以将显示数据放入一个中间数组,并使用您希望排序的值的键,然后在数组上调用 ksort()。然而,这将需要两次遍历数据。

$path = ".";
$files = new DirectoryIterator($path);
$files_array = array();

while($files->valid()) {
        // sort key, ie. modified timestamp
        $key = $files->getMTime();
        $data = $files->getFilename();
        $files_array[$key] = $data;
        $files->next();
}
ksort($files_array);
foreach($files_array as $key => $file){
    print $key . " => " . $file . "\n";
}

编辑:

如果您将要为文件输出的所有信息放在数组值中,您可以在之后简单地对数组进行 implode(),而不是再次循环遍历数据。

于 2009-07-02T22:20:17.003 回答
-4
$files = new DirectoryIterator($path);
$i = 0;
$paths = array();
while($files->valid()) {
    $paths[$i++] = $files->getFileName();
    $files->next();
}
sort($paths)

可能是您正在寻找的东西,您当然可以随时根据您的喜好应用排序功能对路径进行排序。

于 2009-07-02T22:23:59.210 回答