如何使用Symfony Finder组件按DESC顺序对文件进行排序?

时间:2014-09-24 13:12:04

标签: php symfony symfony-components symfony-finder

默认情况下,Symfony Finder ComponentASC订单排序文件。

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

如何按DESC排序文件?

3 个答案:

答案 0 :(得分:11)

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

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

这就是排序提示。 这种工作总是一样的。 请查看usort function

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

答案 1 :(得分:6)

在Symfony \ Component \ Finder \ Iterator \ SortableIterator中,您可以看到ASC案例,因此DESC案例是:

$finder->files()->in($this->getDumpPath())->sort(
    function ($a, $b) {
       return ($b->getMTime() - $a->getMTime());
    }
);

答案 2 :(得分:1)

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 commit