Il semble que vous ayez besoin scandir
au lieu de glob, car glob ne peut pas voir les fichiers cachés sous unix.
<?php
$pid = basename($_GET["prodref"]); //let's sanitize it a bit
$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) {
if (!is_readable($dir)) return null;
return (count(scandir($dir)) == 2);
}
?>
Notez que ce code n'est pas le sommet de l'efficacité, car il est inutile de lire tous les fichiers seulement pour savoir si le répertoire est vide. Donc, la meilleure version serait
function dir_is_empty($dir) {
$handle = opendir($dir);
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
closedir($handle);
return false;
}
}
closedir($handle);
return true;
}
D'ailleurs, n'utilisez pas mots pour remplacer boolean les valeurs. L'objectif même de ces dernières est de vous dire si quelque chose est vide ou non. Un site
a === b
l'expression renvoie déjà Empty
ou Non Empty
en termes de langage de programmation, false
ou true
respectivement - ainsi, vous pouvez utiliser le résultat même dans des structures de contrôle comme IF()
sans aucune valeur intermédiaire
8 votes
C'est juste une faute de frappe dans votre instruction if. Utilisez == (comparer) au lieu du simple = (assigner).