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

5

Мы можем получить файлы в каталоге на PHP

$files = new DirectoryIterator() 

после этого есть ли простой способ сортировки элементов в определенном порядке их отображения? Благодарю.

@ & # X52D5; & # x975C; & # x80FD; & # x91CF; - Вы китаец? Derek 朕會功夫

Ваш Ответ

2   ответа
9

Вы можете поместить отображаемые данные в промежуточный массив с ключом значения, по которому вы хотите отсортировать, и вызвать 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";
}

редактировать:

если вы поместите всю информацию, которую вы хотите вывести для файлов, в значения массива, вы можете просто потом развернуть () массив, вместо того, чтобы повторять циклически повторяющиеся данные.

-4
$files = new DirectoryIterator($path);
$i = 0;
$paths = array();
while($files->valid()) {
    $paths[$i++] = $files->getFileName();
    $files->next();
}
sort($paths)

то, что вы ищете, вы всегда можете применить функцию сортировки для сортировки путей в зависимости от ваших предпочтений после этого.

Похожие вопросы