Функция is_file всегда возвращает false для третьего элемента массива

Это простая функция PHP для очистки всех пустых папок в каталоге.

Но он всегда принимает третий элемент массива как каталог, даже если это файл.

function myfunction($s){
    echo "<br>Now the directory is $s";
    echo "<br>";
    if (is_file($s)) {
        echo "$s is a file <br>";
        return;
    }
    else {
        echo "$s is a directory";
        chdir($s);
        $d = scandir(".");
        echo "<br> Array elements are ". print_r($d) . "<br>";
        echo sizeof($d);
        for ($i= 2; $i <sizeof($d); $i++) {
            $a = $d[$i];
            echo "<br>Now the folder is $a <br>";
            echo "<br>";
            if (empty($a)) {
                rmdir($a);
            }
            else{
                myfunction($a);
                chdir("..");
            }
        }
    }
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
37
1

Ответы 1

Функция empty() не проверяет содержимое каталога на пустоту, но только если значение переменной пусто. Ваша переменная $a содержит имя файла текущей итерации, поэтому вы проверяете, имеет ли файл имя файла. Этого никогда не произойдет, поэтому вы всегда выполняете ветку с рекурсивным вызовом.

По сути, вам нужно подсчитать количество записей, которые scandir() возвращает для каталога. Если conut - 2, каталог пуст и может быть удален.

Я изменился. но все равно результат такой же

ashwin 27.11.2018 02:18

@rexon вы можете отредактировать свой вопрос с помощью обновленного кода? Я на 83% уверен, что проблема заключается в использовании empty() вместо подсчета записей в каталоге.

knittl 27.11.2018 17:36

Другие вопросы по теме