ホームページ > バックエンド開発 > PHPチュートリアル > PHP でディレクトリが隠しファイルも含めて空かどうかを正確に判断する方法は?

PHP でディレクトリが隠しファイルも含めて空かどうかを正確に判断する方法は?

DDD
リリース: 2024-10-24 18:39:02
オリジナル
642 人が閲覧しました

How to Accurately Determine if a Directory is Empty in PHP, Including Hidden Files?

PHP でのディレクトリの空の確認

PHP を使用してディレクトリが空かどうかを確認したいと考えていますが、現在のスクリプトでは一貫性のない結果が得られます。問題を調べて、信頼できる解決策を探ってみましょう。

コードは glob を使用してディレクトリ内のファイルを取得します。ただし、glob には制限があります。ドットで始まる隠しファイル (「.gitignore」など) は検出できません。その結果、隠しファイルが存在する場合でもスクリプトがディレクトリを空として報告する可能性があります。

この制限を克服するには、glob を scandir に置き換えることができます。 scandir は、隠しファイルを含むディレクトリ内のすべてのファイルを読み取ります。コードを次のように変更できます。

<code class="php">$dir = '/assets/'.$pid.'/v';
if (is_dir_empty($dir)) {
  echo "the folder is empty"; 
}else{
  echo "the folder is NOT empty";
}

function is_dir_empty($dir) {
  return (count(scandir($dir)) == 2);
}</code>
ログイン後にコピー

is_dir_empty 関数は、ディレクトリ内のファイルの数をカウントし、それを 2 (「.」と「..」を表す) と比較します。カウントが 2 の場合、ディレクトリは空です。

または、opendir と readdir を使用してディレクトリをループし、非表示でないファイルをチェックすることもできます。

<code class="php">function dir_is_empty($dir) {
  $handle = opendir($dir);
  while (false !== ($entry = readdir($handle))) {
    if ($entry != "." && $entry != "..") {
      closedir($handle);
      return false;
    }
  }
  closedir($handle);
  return true;
}</code>
ログイン後にコピー

これらを使用することにより、メソッドを使用すると、ディレクトリに隠しファイルが含まれている場合でも、ディレクトリが空かどうかを正確に判断できます。さらに、コードをより明確かつ簡潔にするために、単語 (「空」または「空ではない」) の代わりにブール値を使用することを検討してください。

以上がPHP でディレクトリが隠しファイルも含めて空かどうかを正確に判断する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート