【PHP】【scandir】ディレクトリ内のファイル・ディレクトリ一覧を取得する

こんにちは、ryohei(@ityryohei)です!

本記事では、PHPのscandirを使って指定したディレクトリ内に存在するファイル・ディレクトリ一覧を取得する方法をご紹介しています。

PHPのscandirでディレクトリ内のファイル・ディレクトリ一覧を取得したいんだけど、良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

scandirとは

scandirは、指定したサーバーパスのファイル・ディレクトリ一覧を取得する関数です。関数を実行すると、ファイル・ディレクトリ一覧の配列を返します。

構文

<?php

scandir($directory, $sorting_order, $context);

パラメータ

directory 対象のディレクトリのサーバーパスを指定します。
sorting_order取得した一覧のソート順を指定します。デフォルトはアルファべと昇順、1を指定するとアルファベット降順になります。
contextcontextパラメータについてはこちらをご参照ください。

参考:https://www.php.net/manual/ja/function.scandir.php

scandirで指定したディレクトリ内のファイル・ディレクトリ一覧を取得する

scandirで指定したディレクトリ内のファイル・ディレクトリ一覧を取得してみます。ディレクトリの構成は下記の通りです。index.phpでscandirを実行し、結果を確認してみます。

ディレクトリ構成

dir/
 ├ index.php →実行ファイル
 └ subdir/ →ディレクトリ
     └ test4.php →ファイル
 ├ test1.php →ファイル
 ├ test2.php →ファイル
 ├ test3.php →ファイル

PHP

<?php

$dir = __DIR__;
$files = scandir($dir);

var_dump($files);

実行結果

array(7) {
  [0]=>
 string(1) "."
  [1]=> string(2) ".."
  [2]=> string(9) "index.php"
  [3]=> string(4) "test"
  [4]=> string(9) "test1.php"
  [5]=> string(9) "test2.php"
  [6]=> string(9) "test3.php"
}

実行結果を確認すると、ディレクトリ内に存在するファイト・ディレクトリの配列を取得することができています。subdir(サブディレクトリ)の内容は取得できていないため、サブディレクトリの内容も取得する場合は追加で処理を組む必要があります。is_dir関数でディレクトリを判定することができるため、対象がディレクトリであれば再度scandirを実行するという処理で対応できるかと思います。

最後に

PHPでは、scandirを使って簡単に指定したディレクトリ内のファイル・ディレクトリ一覧を取得することができます。他の組み込み関数と組み合わせることでディレクトリを辿って深い階層のディレクトリに存在するファイル一覧まで取得することができます。自身のWebサイト・アプリの全体のディレクトリ構成を取得するスクリプトを作ってみて、ディレクトリ関連の組み込み関数のマスターを目指しすのも良いかもしれませんね!

以上、PHPのscandirでディレクトリ内のファイル・ディレクトリ一覧を取得する方法のご紹介でした!

おすすめの書籍

Adobe Creative Cloudを通常価格で購入していませんか?

Adobe Creative Cloud(Adobe CC)はAdobe社が提供するクリエイター向けのサービスです。WEB制作の幅を広げる「Photoshop・Illustrator・XD」Youtuberや動画クリエイターの編集作業に欠かせない「Premiere Pro・After Effects」など全20以上のアプリが提供されており、幅広いプランが用意されています。

コンプリートプランはAdobe CCの全20以上のアプリが使用できるプランです。多くのアプリが使用できるため定価で購入すると年間7万円以上するプランですが、デジタルハリウッドのAdobeマスター講座では「基礎動画教材+Adobe CC コンプリートプラン(12ヵ月)」がセットになって39,980円(税込)で利用できます。定価より安価にAdobe Creative Cloudのライセンスを購入でき、以降のライセンス更新も可能。動画教材で基礎スキルを習得できるので、入門する方にも便利な講座です。詳しくは下記のリンクからチェックしてみてくださいね。

Adobeマスター講座はこちら