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 サイトの他の関連記事を参照してください。