在PHP中使用$ files = new DirectoryIterator()之后,如何对项目进行排序?

时间:2009-07-02 22:04:21

标签: php sorting spl

我们可以通过

获取PHP目录中的文件
$files = new DirectoryIterator() 

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

2 个答案:

答案 0 :(得分: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";
}

编辑:

如果将要输出的所有信息都放在数组值中的文件中,那么之后可以简单地内插()数组,而不是再次循环数据。

答案 1 :(得分:-4)

$files = new DirectoryIterator($path);
$i = 0;
$paths = array();
while($files->valid()) {
    $paths[$i++] = $files->getFileName();
    $files->next();
}
sort($paths)

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