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

StackOverflow https://stackoverflow.com/questions/1076881

  •  21-08-2019
  •  | 
  •  

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

$files = new DirectoryIterator() 

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

有帮助吗?

解决方案

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

您可以将显示数据放入中间数组中,其中键为您希望排序的值,然后在数组上调用 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() 数组,而不是再次循环数据。

其他提示

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

可能是你在找什么,你可以随时当然取决于后您的喜好应用排序功能的路径进行排序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top