PHP でディレクトリが空であることを確認する
ディレクトリが空であるかどうかを判断することは、さまざまな Web 開発シナリオにおいて重要なタスクとなる可能性があります。ただし、特定のスクリプトでは、ファイルが存在するかどうかにかかわらず、出力で空のディレクトリまたは空ではないディレクトリが誤って示唆されるという問題が発生することがあります。
オリジナル スクリプト
提供されているスクリプトは、次のコードを使用してディレクトリが空かどうかをチェックしようとします:
$q = (count(glob("$dir/*")) === 0) ? 'Empty' : 'Not empty';
ただし、glob() 関数は Unix 隠しファイルの検出に失敗し、不正確な結果が生じる可能性があります。
改善された解決策
この問題を解決するには、通常のファイルと隠しファイルの両方を検出できる glob() の代わりに scandir() 関数を使用することをお勧めします。さらに、効率を向上させるために、カスタム関数を使用して空かどうかをより迅速にチェックできます。
function is_dir_empty($dir) {
return (count(scandir($dir)) == 2);
}
この関数は、ディレクトリに現在のディレクトリ (".") と親ディレクトリ ("..") の 2 つのエントリのみが含まれているかどうかをチェックします。これは、空のディレクトリであることを示します。
ベスト プラクティス
ベスト プラクティスとして、「Empty」や「Not」などのテキスト文字列に依存するのではなく、制御構造内でブール値を直接使用することをお勧めします。 空の。"ブール式を使用すると、空か空ではない条件を判断するためのより簡潔かつ正確な方法が提供されます。
たとえば、
if ($q == "Empty") {
// ...
}
直接使用できます:
if (is_dir_empty($dir)) {
// ...
}
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3