Я использую следующий сценарий для чтения каталога. Если в каталоге нет файла, он должен сказать пустой. Проблема в том, что он просто продолжает говорить, что каталог пуст, даже если внутри есть файлы, и наоборот.
<?php
$pid = $_GET["prodref"];
$dir = '/assets/'.$pid.'/v';
$q = (count(glob("$dir/*")) === 0) ? 'Empty' : 'Not empty';
if ($q=="Empty")
echo "the folder is empty";
else
echo "the folder is NOT empty";
?>
@Your Общий Sense,@Enyby
Некоторое улучшение Вашего кода:
function dir_is_empty($dir) {
$handle = opendir($dir);
$result = true;
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
$result = false;
break 2;
}
}
closedir($handle);
return $result;
}
я использую переменную для хранения результата и устанавливаю его на истинный.
, Если каталог пуст единственные файлы, которые возвращаются. и.. (на сервере Linux Вы могли расширить условие для Mac, если Вам нужно к), и поэтому условие верно.
Тогда значение результата имеет значение false, и повредитесь 2, выходят, если и цикл с условием продолжения, таким образом, следующий выполняемый оператор является closedir.
Поэтому цикл с условием продолжения будет только иметь 3 круга, прежде чем он закончится независимо, если каталог будет пуст или нет.