繁体   English   中英

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

[英]How can I sort files by DESC order with Symfony Finder Component?

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

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

如何通过DESC对文件进行排序?

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

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

这都是关于排序技巧。 这种工作总是一样的。 请查看usort功能

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

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

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

现在可以使用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提交

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM