Maison  >  Article  >  développement back-end  >  Comment déterminer avec précision si un répertoire est vide en PHP, y compris les fichiers cachés ?

Comment déterminer avec précision si un répertoire est vide en PHP, y compris les fichiers cachés ?

DDD
DDDoriginal
2024-10-24 18:39:02571parcourir

How to Accurately Determine if a Directory is Empty in PHP, Including Hidden Files?

Déterminer le vide du répertoire en PHP

Vous souhaitez vérifier si un répertoire est vide à l'aide de PHP mais votre script actuel fournit des résultats incohérents. Examinons le problème et explorons une solution fiable.

Votre code utilise glob pour récupérer les fichiers du répertoire. Cependant, glob a une limitation : il ne peut pas détecter les fichiers cachés commençant par un point (par exemple, ".gitignore"). Par conséquent, votre script peut signaler le répertoire comme vide même si des fichiers cachés sont présents.

Pour surmonter cette limitation, vous pouvez remplacer glob par scandir. scandir lit tous les fichiers d'un répertoire, y compris les fichiers cachés. Vous pouvez modifier votre code comme suit :

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

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

La fonction is_dir_empty compte le nombre de fichiers dans le répertoire et le compare à 2 (représentant "." et ".."). Si le nombre est de 2, le répertoire est vide.

Vous pouvez également utiliser opendir et readdir pour parcourir le répertoire et rechercher les fichiers non cachés :

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

En utilisant ces méthodes, vous pouvez déterminer avec précision si un répertoire est vide, même s'il contient des fichiers cachés. De plus, pensez à utiliser des valeurs booléennes au lieu de mots (« Vide » ou « Non vide ») pour un code plus clair et plus concis.

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