Überprüfen der Verzeichnisleerheit in PHP
Die Feststellung, ob ein Verzeichnis leer ist, kann in verschiedenen Webentwicklungsszenarien eine wichtige Aufgabe sein. Bei bestimmten Skripten können jedoch Probleme auftreten, bei denen die Ausgabe fälschlicherweise ein leeres oder nicht leeres Verzeichnis vorschlägt, obwohl Dateien darin vorhanden sind oder nicht.
Originalskript
Das bereitgestellte Das Skript versucht mithilfe des folgenden Codes zu prüfen, ob das Verzeichnis leer ist:
$q = (count(glob("$dir/*")) === 0) ? 'Empty' : 'Not empty';
Die glob()-Funktion kann jedoch möglicherweise keine versteckten Unix-Dateien erkennen, was zu ungenauen Ergebnissen führt.
Verbesserte Lösung
Um dieses Problem zu beheben, empfehlen wir die Verwendung der Funktion scandir() anstelle von glob(), da diese sowohl reguläre als auch versteckte Dateien erkennen kann. Um die Effizienz zu verbessern, können wir außerdem eine benutzerdefinierte Funktion verwenden, um schneller auf Leere zu prüfen:
function is_dir_empty($dir) {
return (count(scandir($dir)) == 2);
}
Diese Funktion prüft, ob das Verzeichnis nur zwei Einträge enthält: das aktuelle Verzeichnis (".") und das übergeordnete Verzeichnis (".."), was auf ein leeres Verzeichnis hinweist.
Best Practice
Als Best Practice ist es ratsam, boolesche Werte direkt in Kontrollstrukturen zu verwenden, anstatt sich auf Textzeichenfolgen wie „Leer“ oder „Nicht leer“ zu verlassen. Boolesche Ausdrücke bieten eine prägnantere und genauere Möglichkeit, leere oder nicht leere Bedingungen zu bestimmen.
Zum Beispiel anstelle von:
if ($q == "Empty") {
// ...
}
Sie können direkt verwenden:
if (is_dir_empty($dir)) {
// ...
}
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3