按字母顺序列出文件(文件和文件夹)

时间:2010-03-03 20:31:30

标签: php file filesystems

如何使用PHP按字母顺序列出文件夹中的所有文件和文件夹?

我对文件a.txtb.txtcd.txt使用了以下内容,其中c是一个文件夹。问题是c最后显示而不是b.txt之后,因为它是一个文件夹。

我还希望能够检查每个文件是文件还是文件夹。

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

5 个答案:

答案 0 :(得分:1)

glob()的力量可以帮到你。只是做:

$dir = glob("folders/*");

答案 1 :(得分:0)

首先将名称读入数组而不是立即打印。然后对数组进行排序,然后输出。

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

答案 2 :(得分:0)

首先将名称读入数组而不是立即打印。然后对数组进行排序,然后输出。

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

    foreach ($files as $f)
        echo "$f <br />";
?>

答案 3 :(得分:0)

我建议使用以下代码(不需要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”函数

答案 4 :(得分:0)

$files = scandir('folders');
sort($files);
foreach ($files as $file) {
    echo $file.'<br />';
}