После использования $files = new DirectoryIterator() в PHP, как вы сортируете элементы?
Мы можем получить файлы в каталоге на PHP
$files = new DirectoryIterator()
после этого есть ли простой способ сортировки элементов в определенном порядке их отображения? Благодарю.
2 ответа
Не похоже, что есть способ сортировки данных внутри итератора.
Вы можете поместить отображаемые данные в промежуточный массив с ключом значения, по которому вы хотите отсортировать, и вызвать 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";
}
редактировать:
если вы поместите всю информацию, которую вы хотите вывести для файлов, в значения массива, вы можете просто потом развернуть () массив, вместо того, чтобы повторять циклически повторяющиеся данные.
$files = new DirectoryIterator($path);
$i = 0;
$paths = array();
while($files->valid()) {
$paths[$i++] = $files->getFileName();
$files->next();
}
sort($paths)
Может быть то, что вы ищете, вы всегда можете применить функцию сортировки для сортировки путей в зависимости от ваших предпочтений после этого.