Php/docs/function.readdir

提供:Dev Guides
< Php
移動先:案内検索

readdir

(PHP 4, PHP 5, PHP 7)

readdirディレクトリハンドルからエントリを読み込む


説明

readdir ([ resource $dir_handle ] ) : string|false

ディレクトリから次のエントリの名前を返します。 エントリ名はファイルシステム上に格納されている順番で返されます。


パラメータ

dir_handle
opendir() が事前にオープンした ディレクトリハンドルリソース。 ディレクトリハンドルを指定しなかった場合は、 opendir() が最後にオープンしたものを使用します。


返り値

成功した場合にエントリ名、失敗した場合に false を返します。

警告 この関数は論理値 false を返す可能性がありますが、false として評価される値を返す可能性もあります。 詳細については 論理値の セクションを参照してください。この関数の返り値を調べるには ===演算子 を 使用してください。


例1 ディレクトリ内の全てのエントリのリストを得る

以下の例で、readdir() の返り値をどのように調べているかに 注目してください。返り値が false と一致することを、明示的に (値が等しく、かつ型も等しい - 詳細は 比較演算子 を参照ください)調べています。なぜなら、そうしないと false と評価されてしまうディレクトリエントリ (例: "0" という名前のディレクトリ)があった場合にループが とまってしまうからです。


<?phpif ($handle = opendir('/path/to/files')) {    echo "Directory handle: $handle\n";    echo "Entries:\n";    /* ディレクトリをループする際の正しい方法です */    while (false !== ($entry = readdir($handle))) {        echo "$entry\n";    }    /* ディレクトリをループする際の「間違った」方法です */    while ($entry = readdir($handle)) {        echo "$entry\n";    }    closedir($handle);}?>

例2 カレントディレクトリの全てのエントリを一覧する。ただし . および .. は取り除く

<?phpif ($handle = opendir('.')) {    while (false !== ($entry = readdir($handle))) {        if ($entry != "." && $entry != "..") {            echo "$entry\n";        }    }    closedir($handle);}?>

参考

  • is_dir() - ファイルがディレクトリかどうかを調べる
  • glob() - パターンにマッチするパス名を探す
  • opendir() - ディレクトリハンドルをオープンする
  • scandir() - 指定されたパスのファイルとディレクトリのリストを取得する