関数の概要
scandirは、指定したディレクトリの中にあるファイルやフォルダの一覧を取得するPHPの組み込み関数です。ディレクトリ内の内容を配列で返すため、ファイルの一覧表示やファイル操作を行う際に非常に便利です。WordPressなどのCMSのカスタマイズやプラグイン開発でもよく使われます。
パラメータの説明
directory(必須): ファイル一覧を取得したいディレクトリのパスを文字列で指定します。sorting_order(省略可): ファイル名のソート順を指定します。SCANDIR_SORT_ASCENDING(昇順)がデフォルトで、SCANDIR_SORT_DESCENDING(降順)も指定可能です。context(省略可): ストリームコンテキストを指定できます。通常は使う機会が少ないです。
戻り値
読み込んだファイルやディレクトリ名の配列を返します。返された配列の要素は文字列で、’.’(現在のディレクトリ)、’..’(親ディレクトリ)も含まれます。もし指定したディレクトリが存在しない場合や読み込みに失敗した場合は false が返ります。
使用例
基本的な使い方
$files = scandir('/path/to/directory');
print_r($files);
この例では、指定したディレクトリのファイルやフォルダの一覧を取得し、そのまま配列として表示します。’.’や’..’も含まれる点に注意してください。
並び順を降順に変更する例
$files = scandir('/path/to/directory', SCANDIR_SORT_DESCENDING);
foreach ($files as $file) {
echo $file . "<br>";
}
2つめのパラメータに SCANDIR_SORT_DESCENDING を指定すると、一覧が降順にソートされます。
‘.’と’..’を除外してファイルだけ一覧表示する例
$files = scandir('/path/to/directory');
$files = array_diff($files, array('.', '..'));
foreach ($files as $file) {
echo $file . "<br>";
}
通常、scandirは現在と親ディレクトリを表す’.’と’..’を返します。これらを取り除くために array_diff を使っています。
関連する関数
readdir()– ディレクトリハンドルから1つずつファイル名を取得するopendir()– ディレクトリを開くis_dir()– ファイルやパスがディレクトリかどうか判定するfile_exists()– ファイルやディレクトリの存在を確認する
まとめ
scandirはPHPでディレクトリ内のファイルやフォルダを簡単に一覧取得できる便利な関数です。ファイル管理や表示を行う際の基本的なツールとして覚えておくと、WordPressの開発やカスタマイズでも役立ちます。取得した配列から不要な’.’や’..’を取り除く処理も合わせて使うと、実用的なファイル一覧の生成が可能です。
