Похоже, вам нужно 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;
}
Кстати, не используйте слова для замены логических значений. Сама цель последнего - сказать вам, пусто что-то или нет. An
a === b
выражение уже возвращает Empty
или Non Empty
в терминах языка программирования, FALSE
или TRUE
соответственно - так что вы можете использовать сам результат в управляющих структурах, например, IF()
без каких-либо промежуточных значений