Список файлов по алфавиту (как файлы, так и папки) - PullRequest
4 голосов
/ 03 марта 2010

Как бы я перечислил все файлы и папки в папке в алфавитном порядке с PHP?

Я использовал следующее для файлов a.txt, b.txt, c и d.txt, где c - папка. Проблема в том, что c отображается последним, а не после b.txt, потому что это папка.

Я также хотел бы иметь возможность проверить, является ли каждый файл файлом или папкой.

<?php
    $dir = opendir ("folders");
    while (false !== ($file = readdir($dir))) {
        echo "$file <br />";
    }
?>

Ответы [ 5 ]

1 голос
/ 03 марта 2010

Сила glob() здесь, чтобы помочь вам. Просто сделай:

$dir = glob("folders/*");
0 голосов
/ 04 марта 2010
$files = scandir('folders');
sort($files);
foreach ($files as $file) {
    echo $file.'<br />';
}
0 голосов
/ 03 марта 2010

Я бы предложил следующий код (нет необходимости в opendir и т. Д.)

$entries = glob("*");
sort($entries); // This is optional depending on your os, on linux it works the way you want w/o the sort
var_dump($entries);

/* Output
array(4) {
  [0]=>
  string(5) "a.txt"
  [1]=>
  string(5) "b.txt"
  [2]=>
  string(1) "c"
  [3]=>
  string(5) "d.txt"
}
*/

Для второй части вашего вопроса: вы php "is_file" и "is_dir" функции

0 голосов
/ 03 марта 2010

Просто прочитайте имена сначала в массив вместо немедленной печати. Затем отсортируйте массив и сделайте вывод.

<?php
    $files = array();
    $dir = opendir ("folders");
    while (false !== ($file = readdir($dir))) {
        $files[] = $file;
    }
    sort($files);

    foreach ($files as $f)
        echo "$f <br />";
?>
0 голосов
/ 03 марта 2010

Просто прочитайте имена сначала в массив вместо немедленной печати. Затем отсортируйте массив и сделайте вывод.

<?php
$dir = opendir ("folders");
while (false !== ($file = readdir($dir))) {
    $names[] = $file;
}
sort($names, SORT_STRING);
foreach ($names as $name) {
    echo "$name <br />";
}
?>
...