HOWTO · PHP

PHP でディレクトリ内のファイルを数える

このチュートリアルでは、PHP でディレクトリ内のファイルをカウントする方法を紹介します。

このページの内容

この記事では、PHP でディレクトリ内のファイルを数えるいくつかの方法を紹介し、実演します。

FilesystemIterator クラスを使用して PHP のディレクトリ内のファイルをカウントする

PHP は、ディレクトリ内のファイルを数える洗練された方法である FilesystemIterator クラスを提供します。 このクラスには、filesystem を反復するためのさまざまな操作を実行する多くの関数と定数が含まれています。

iterator_count() 関数を使用すると、イテレータの要素数がカウントされます。

次のディレクトリ構造を考えてみましょう。

myDir
├── abc.html
├── abc.jpeg
├── abc.php
└── abc.png

まず、変数 $iterator を作成し、FilesystemIterator() のインスタンスを格納します。 最初のパラメーターを __DIR__ として設定し、コンストラクターの 2 番目のパラメーターとして FilesystemIterator::SKIP_DOTS を使用します。

__DIR__ はスクリプトが配置されている現在のディレクトリを表し、2 番目のパラメーターは . をスキップするフラグです。 および .. はディレクトリに存在します。 $iterator 変数には、現在のディレクトリの filesystem イテレータが含まれています。

ファイル名、ファイル数などの情報を取得するために反復できます。

次に、iterator_count() 関数を使用して、ディレクトリ内の $iterator の数を出力します。

コード例:

$iterator = new FilesystemIterator(__DIR__, FilesystemIterator::SKIP_DOTS);
echo "There are ". iterator_count($iterator). " files in the directory";

出力:

There are 4 files in the directory

したがって、FilesystemIterator() クラスを使用して、ディレクトリ内のファイルをカウントできます。

glob() および count() 関数を使用して PHP のディレクトリ内のファイルをカウントする

glob() および count() 関数を使用して、ディレクトリ内のファイル数を取得できます。 glob() 関数は、指定されたパターンに一致するファイルとフォルダーの配列を提供します。

* を使用して、ディレクトリ内のすべてのファイルを取得できます。 次に、count() 関数を使用して、その配列の要素数を取得できます。

たとえば、$path 変数を作成し、ファイルをカウントするディレクトリの正確なパスを保存します。 次に、glob() 関数を $path 変数に使用し、変数を /* で連結します。

その結果、myDir 内のすべてのファイルの配列が作成されます。 最後に、glob() 関数の結果に対して count() 関数を使用します。

したがって、myDir ディレクトリ内のファイルの数を見つけることができます。 以下のコード例は、最初の例で使用されたファイル構造を表しています。

コード例:

$path =$_SERVER['DOCUMENT_ROOT']."/myDir";
$num = count(glob($path . "/*"));
echo $num;

出力:

4

scandir() および count() 関数を使用して、PHP でディレクトリ内のファイルをカウントする

この方法は、2 番目の方法と同様のアプローチです。 ここでの唯一の違いは、glob() 関数の代わりに scandir() 関数を使用することです。

scandir() 関数へのパラメーターとしてディレクトリ パスを指定できます。 この関数は、. を含む、ディレクトリ内のすべての内容を含む配列を返します。 と ..

次に、count() 関数を使用して、ディレクトリ内のコンテンツの数を取得できます。 最後に、重要な部分は count() 関数の結果から 2 を引き、. のカウントを削除することです。 と ..

したがって、ディレクトリ内のファイルの正確な数を取得できます。

コード例:

$path =$_SERVER['DOCUMENT_ROOT']."/myDir";
$num = count(scandir($path))-2;
echo "there are $num files in the directory";

出力:

there are 4 files in the directory