„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > ## Wie kann man in PHP zuverlässig feststellen, ob ein Verzeichnis leer ist?

## Wie kann man in PHP zuverlässig feststellen, ob ein Verzeichnis leer ist?

Veröffentlicht am 08.11.2024
Durchsuche:643

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

Ü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)) {
  // ...
}
Neuestes Tutorial Mehr>

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