ホームページ  >  記事  >  バックエンド開発  >  ## PHP でディレクトリが空かどうかを確実に判断するにはどうすればよいですか?

## PHP でディレクトリが空かどうかを確実に判断するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-25 04:19:29913ブラウズ

## How to Reliably Determine if a Directory is Empty in PHP?

PHP でディレクトリが空であることを確認する

ディレクトリが空であるかどうかを判断することは、さまざまな Web 開発シナリオにおいて重要なタスクとなる可能性があります。ただし、特定のスクリプトでは、ディレクトリ内にファイルが存在するかどうかにかかわらず、出力で空のディレクトリまたは空ではないディレクトリが誤って示唆されるという問題が発生することがあります。

オリジナル スクリプト

スクリプトは、次のコードを使用してディレクトリが空であるかどうかをチェックしようとします:

<code class="php">$q = (count(glob("$dir/*")) === 0) ? 'Empty' : 'Not empty';</code>

ただし、glob() 関数は Unix 隠しファイルの検出に失敗する可能性があり、不正確な結果が生じる可能性があります。

改善された解決策

この問題を解決するには、通常のファイルと隠しファイルの両方を検出できる glob() の代わりに scandir() 関数を使用することをお勧めします。さらに、効率を向上させるために、カスタム関数を使用して空かどうかをより迅速にチェックできます。

<code class="php">function is_dir_empty($dir) {
  return (count(scandir($dir)) == 2);
}</code>

この関数は、ディレクトリに現在のディレクトリ (".") と親の 2 つのエントリのみが含まれているかどうかをチェックします。ディレクトリ ("..")。空のディレクトリを示します。

ベスト プラクティス

ベスト プラクティスとして、制御構造ではブール値を直接使用することをお勧めします。 「空」や「空ではない」などのテキスト文字列に依存するよりも便利です。ブール式を使用すると、空または空でない条件を判断するためのより簡潔かつ正確な方法が提供されます。

たとえば、次を使用する代わりに、

<code class="php">if ($q == "Empty") {
  // ...
}</code>

を直接使用できます。

<code class="php">if (is_dir_empty($dir)) {
  // ...
}</code>

以上が## PHP でディレクトリが空かどうかを確実に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。