после использования $files = new DirectoryIterator() в PHP, как вы сортируете элементы?

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