PHP

パスの対象がファイル/ディレクトリであるかを確認する

  1. 最終更新日:
  2. 公開日:

渡したパスがファイルかを確認するis_file関数と、ディレクトリかを確認するis_dir関数を使って、パスのファイルの種類を調べる方法を解説します。

この記事のポイント

  • 対象パスがファイル、ディレクトリ、その他であるかを確認する
  • 特定のディレクトリに含まれるファイル数を数える

対象パスがファイル/ディレクトリのどちらであるかを確認する

is_file関数はパスを渡すと、対象のパスがファイルであるかを確認することができます。

PHP コード例

is_file('./test.txt');

対象パスがファイルの場合はtrueを返し、ディレクトリやシンボリックリンクなどファイルではない場合にfalseを返します。

もう1つ、似たような関数で対象パスがディレクトリかを確認するis_dir関数があります。

PHP コード例

is_dir('./graycode/');

対象パスがディレクトリの場合はtrueを返し、ディレクトリじゃない場合にfalseを返します。

使用例

is_file関数is_dir関数を使うと、特定のディレクトリに含まれるファイルとディレクトリの数をカウントすることができます。

PHP コード例

// 対象へのパス
$path = './test/';

// 配列を初期化
$list = array(
  'dir' => array(),
  'file' => array(),
  'etc' => array()
);

// ディレクトリ内のファイル一覧を取得
$files = scandir($path);

foreach( $files as $file_name ) {

  switch( $path.$file_name) {

    // ディレクトリか確認
    case is_dir($path.$file_name):
      $list['dir'][] = $file_name;
      break;
    
    // ファイルかを確認
    case is_file($path.$file_name):
      $list['file'][] = $file_name;
      break;

    // どちらでもない(シンボリックリンクなど)
    default:
      $list['etc'][] = $file_name;
  }
}

echo 'ディレクトリの数:' . count($list['dir']) . '<br>';
echo 'ファイルの数:' . count($list['file']) . '<br>';
echo 'その他:' . count($list['etc']) . '<br>';

こちらのコードではtestディレクトリにファイルとディレクトリがいくつずつ含まれるかを確認しています。

まずscandir関数testディレクトリ内のファイル一覧を取得し、foreach文で取得したファイル(またはディレクトリ)の数だけループ処理を実行します。

switch文の中でcaseis_dir関数is_file関数を組み合わせ、該当した場合に配列へファイル名(ディレクトリ名)を追加していきます。

最後に、count関数で配列の要素数を数えて出力する流れです。

記事一覧

関連記事