readdir

(PHP 3, PHP 4, PHP 5)

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

説明

string readdir ( resource dir_handle )

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

パラメータ

dir_handle

opendir() で事前にオープンした ディレクトリハンドルの resource

返り値

成功した場合にファイル名、失敗した場合に FALSE を返します。

警告

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

例 1. ディレクトリ内の全てのファイルのリストを得る

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

<?php
// 4.0.0-RC2 より前のバージョンでは、!== は存在しないことに注意しましょう

if ($handle = opendir('/path/to/files')) {
    echo
"Directory handle: $handle\n";
    echo
"Files:\n";

    
/* ディレクトリをループする際の正しい方法です */
    
while (false !== ($file = readdir($handle))) {
        echo
"$file\n";
    }

    
/* ディレクトリをループする際の「間違った」方法です */
    
while ($file = readdir($handle)) {
        echo
"$file\n";
    }

    
closedir($handle);
}
?>

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

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

参考

is_dir()
glob()