Кажется, что вам нужно scandir
вместо glob, так как glob не может видеть скрытые 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);
}
?>
Обратите внимание, что этот код не является вершиной эффективности, так как нет необходимости читать все файлы только для того, чтобы узнать, является ли каталог пустым. Таким образом, лучшая версия будет
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()
без каких-либо промежуточных значений