Heim  >  Artikel  >  Backend-Entwicklung  >  ## 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?

DDD
DDDOriginal
2024-10-25 04:19:29913Durchsuche

## 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 ein Verzeichnis leer ist:

<code class="php">$q = (count(glob("$dir/*")) === 0) ? 'Empty' : 'Not empty';</code>

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:

<code class="php">function is_dir_empty($dir) {
  return (count(scandir($dir)) == 2);
}</code>

Diese Funktion prüft, ob das Verzeichnis nur zwei Einträge enthält: das aktuelle Verzeichnis (".") und das übergeordnete Verzeichnis Verzeichnis (.."), was auf ein leeres Verzeichnis hinweist.

Best Practice

Als Best Practice empfiehlt es sich, boolesche Werte lieber direkt in Kontrollstrukturen zu verwenden als 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.

Anstatt beispielsweise Folgendes zu verwenden:

<code class="php">if ($q == "Empty") {
  // ...
}</code>

Sie können Folgendes direkt verwenden:

<code class="php">if (is_dir_empty($dir)) {
  // ...
}</code>

Das obige ist der detaillierte Inhalt von## Wie kann man in PHP zuverlässig feststellen, ob ein Verzeichnis leer ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn