Es scheint, dass Sie scandir
anstelle von glob benötigen , da glob keine versteckten Unix-Dateien sehen kann.
<?php
$pid = basename($_GET["prodref"]);
$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);
}
?>
Beachten Sie, dass dieser Code nicht der Höhepunkt der Effizienz ist, da nicht alle Dateien gelesen werden müssen, um festzustellen, ob das Verzeichnis leer ist. Die bessere Version wäre also
function dir_is_empty($dir) {
$handle = opendir($dir);
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
closedir($handle);
return FALSE;
}
}
closedir($handle);
return TRUE;
}
Verwenden Sie übrigens keine Wörter, um boolesche Werte zu ersetzen . Der eigentliche Zweck des letzteren ist es, Ihnen zu sagen, ob etwas leer ist oder nicht. Ein
a === b
Ausdruck bereits zurückkehrt Empty
oder Non Empty
in Bezug auf die Programmiersprache, FALSE
oder TRUE
jeweils - so können Sie die in Kontrollstrukturen sehr ergeben verwenden wie IF()
ohne Zwischenwerte