Maison  >  Article  >  développement back-end  >  **Comment vérifier avec précision si un répertoire est vide en PHP ?**

**Comment vérifier avec précision si un répertoire est vide en PHP ?**

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 19:21:02946parcourir

**How to Accurately Check if a Directory is Empty in PHP?**

PHP : Déterminer le vide du répertoire

Lorsque vous essayez de vérifier si un répertoire est vide en PHP, un problème courant survient lorsque le répertoire est incorrectement identifié comme vide ou vice versa , quel que soit son contenu réel.

Utilisation de glob() et Scandir

Le script fourni s'appuie sur glob() pour évaluer le contenu du répertoire. Cependant, glob() a des limites dans la détection des fichiers Unix cachés, ce qui conduit à des résultats peu fiables. Une approche alternative consiste à utiliser scandir à la place, garantissant l'inclusion des fichiers cachés.

Implémentation optimisée

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

Cette fonction analyse un répertoire et renvoie vrai s'il est vide (ne contient aucun fichier à l'exception de " .." et "..") et false dans le cas contraire.

Pour une efficacité améliorée, envisagez cette alternative :

<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>

Cette implémentation évite la traversée inutile de répertoires et renvoie immédiatement false lors de la détection d'une valeur autre que celle par défaut. fichiers.

Éviter les affectations explicites

Il n'est pas nécessaire d'attribuer des mots à des valeurs booléennes dans votre code. Les valeurs booléennes PHP elles-mêmes représentent des états vides et non vides, vous pouvez donc les utiliser directement dans des structures de contrôle comme if() :

<code class="php">if (is_dir_empty($dir)) {
  echo "the folder is empty";
} else {
  echo "the folder is NOT empty";
}</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn