Как я могу использовать PHP, чтобы проверить, пуст ли каталог?

Я использую следующий сценарий для чтения каталога. Если в каталоге нет файла, он должен сказать пустой. Проблема в том, что он просто продолжает говорить, что каталог пуст, даже если внутри есть файлы, и наоборот.

<?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";
?>
73
задан TheBlackBenzKid 11 June 2018 в 05:45
поделиться

1 ответ

@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 круга, прежде чем он закончится независимо, если каталог будет пуст или нет.

0
ответ дан 24 November 2019 в 12:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: