# scandir

(PHP 5, PHP 7)

scandir — 列出指定路径中的文件和目录

### 说明

scandir ( string `$directory` [, int `$sorting_order` [, resource `$context` ]] ) : array

返回一个 array，包含有 `directory` 中的文件和目录。

### 参数

`directory`

  要被浏览的目录

`sorting_order`

  默认的排序顺序是按字母升序排列。如果使用了可选参数 `sorting_order`（设为 1），则排序顺序是按字母降序排列。

`context`

  `context` 参数的说明见手册中的 Streams API 一章。

### 返回值

成功则返回包含有文件名的 array，如果失败则返回 `FALSE`。如果 `directory` 不是个目录，则返回布尔值 `FALSE` 并生成一条 `E_WARNING` 级的错误。

### 更新日志

版本 | 说明
--- | ---
5.4.0 | `sorting_order` now accepts constants. Any nonzero value caused descending order in previous versions.

### 范例

Example #1 一个简单的 scandir() 例子

    <?php
    $dir    = '/tmp';
    $files1 = scandir($dir);
    $files2 = scandir($dir, 1);

    print_r($files1);
    print_r($files2);
    ?>

以上例程的输出类似于：

    Array
    (
        [0] => .
        [1] => ..
        [2] => bar.php
        [3] => foo.txt
        [4] => somedir
    )
    Array
    (
        [0] => somedir
        [1] => foo.txt
        [2] => bar.php
        [3] => ..
        [4] => .
    )

Example #2 scandir() 在 PHP 4 中的实现

    <?php
    $dir = "/tmp";
    $dh  = opendir($dir);
    while (false !== ($filename = readdir($dh))) {
        $files[] = $filename;
    }

    sort($files);

    print_r($files);

    rsort($files);

    print_r($files);

    ?>

以上例程的输出类似于：

    Array
    (
        [0] => .
        [1] => ..
        [2] => bar.php
        [3] => foo.txt
        [4] => somedir
    )
    Array
    (
        [0] => somedir
        [1] => foo.txt
        [2] => bar.php
        [3] => ..
        [4] => .
    )

### 注释

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

### 参见

- opendir() - 打开目录句柄
- readdir() - 从目录句柄中读取条目
- glob() - 寻找与模式匹配的文件路径
- is_dir() - 判断给定文件名是否是一个目录
- sort() - 对数组排序