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