Как отсортировать файлы по заказу DESC с помощью Symfony Finder Component?

По умолчанию компонент Symfony Finder сортирует файлы по ASC порядок.

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

Как я могу сортировать файлы по DESC?

2 ответа

Решение

Вы можете использовать метод сортировки и дать свою собственную анонимную функцию сортировки (см. Symfony\Component\Finder\Iterator\SortableIterator)

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

Это все о сортировке советов. С такой работой всегда одно и то же. Пожалуйста, обратите внимание на функцию usort.

Чтобы быть более точным, я просто взял фрагмент кода из Symfony\Component\Finder\Iterator\SortableIteratorи я вернул условие возврата.

Метод reverseSorting, который был представлен в Symfony 4.2, теперь можно использовать.

$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 совершить

В Symfony\Component\Finder\Iterator\SortableIterator вы можете видеть случай ASC, поэтому случай DESC:

$finder->files()->in($this->getDumpPath())->sort(
    function ($a, $b) {
       return ($b->getMTime() - $a->getMTime());
    }
);
Другие вопросы по тегам