glob
関数を使う方法
glob
関数は引数にパターンを与えるとそれにマッチするファイルを配列として返します。
ワイルドカードを指定すればそのディレクトリにあるファイルの一覧を取得できます。
<?php
foreach (glob('*') as $file) {
echo $file . "\n";
}
scandir
関数を使う方法
scandir
関数は引数にディレクトリを指定するとそのディレクトにあるファイルの一覧を配列として返します。
結果にはカレントディレクトリと親ディレクトリが含まれるので、不要であれば除去します。
次のコードはカレントディレクトリにあるファイルの一覧を表示するサンプルコードです。
<?php
foreach (scandir('.') as $f) {
if ($f === '.' || $f === '..') {
continue;
}
echo $f . "\n";
}
opendir
関数、readdir
関数を使う方法
opendir
関数、readdir
関数を使ってファイルの一覧を読むこともできます。
<?php
$d = opendir('.');
while (($file = readdir($d)) !== false) {
if ($file === '.' || $file === '..') {
continue;
}
echo $file . "\n";
}
closedir($d);
入れ子になったディレクトリのファイル一覧を出す
ディレクトリの中にさらにディレクトリがある場合は、再帰的にファイル一覧を取得する必要があります。
次のコードは入れ子になったディレクトリのファイルの一覧を表示する関数のサンプルです。
<?php
function list_files_recursively($path) {
$d = opendir($path);
$files = [];
while (($file = readdir($d)) !== false) {
if ($file === '.' || $file === '..') {
continue;
}
$full_path = rtrim($path, '/') . '/' . $file;
if (is_dir($full_path)) {
$files += list_files_recursively($full_path);
} else {
$files[] = $full_path;
}
}
closedir($d);
return $files;
}