6

默认情况下, Symfony Finder 组件按顺序对文件进行ASC排序。

//sorting by ASC order
$finder->files()->in($this->getDumpPath())->sortByModifiedTime();

如何对文件进行排序DESC

4

3 回答 3

11

您可以使用 sort 方法并提供您自己的匿名排序函数(请参阅 参考资料Symfony\Component\Finder\Iterator\SortableIterator

$finder->sort(function ($a, $b) { return strcmp($b->getRealpath(), $a->getRealpath()); });

这都是关于排序技巧的。这种工作总是一样的。请看一下usort 函数

更准确地说,我只是从 中获取了一个代码片段Symfony\Component\Finder\Iterator\SortableIterator,并且我已经恢复了返回条件。

于 2014-09-25T12:15:23.180 回答
6

Symfony 4.2 中引入的reverseSorting方法现在可以使用了。

$finder = new Finder();
$finder->sortByModifiedTime();
$finder->reverseSorting();
$finder->files()->in( $directoryPath );

foreach ($finder as $file) {
  // log each modification time for example 
  // $this->logger->debug ( \date('d/m/Y H:i', $file->getMTime()) );
}

Github 提交

于 2018-12-10T12:35:25.273 回答
6

在 Symfony\Component\Finder\Iterator\SortableIterator 你可以看到 ASC 的情况,所以 DESC 的情况是:

$finder->files()->in($this->getDumpPath())->sort(
    function ($a, $b) {
       return ($b->getMTime() - $a->getMTime());
    }
);
于 2015-09-08T17:35:58.703 回答