Здається, вам потрібен scandirзамість glob, оскільки glob не може бачити приховані файли unix.
<?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);
}
?>
Зверніть увагу, що цей код не є результатом ефективності, оскільки непотрібно читати всі файли лише для того, щоб визначити, чи каталог порожній. Отже, буде краща версія
function dir_is_empty($dir) {
$handle = opendir($dir);
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
closedir($handle);
return FALSE;
}
}
closedir($handle);
return TRUE;
}
До речі, не використовуйте слова для заміни булевих значень. Сама мета останньої - сказати вам, чи щось порожнє чи ні. Ан
a === b
вираз вже повертається Emptyабо Non Emptyз точки зору мови програмування, FALSEабо TRUEвідповідно - отже, ви можете використовувати сам результат у структурах управління, наприклад, IF()без будь-яких проміжних значень