is_dir не распознает каталоги.Зачем? - PullRequest
4 голосов
/ 19 апреля 2010

У меня есть эта функция:

if (is_dir($dir)) {
        //are we able to open it?
        if ($dh = opendir($dir)) {
            //Let's cycle
            while (($subdir = readdir($dh)) !== false) {
                if ($subdir != "." && $subdir != "..") {

                    echo $subdir;

                }
        }
}

Возвращает:

directory1 , directory2, directory3 etc.. etc..

Но если я сделаю это:

    if (is_dir($dir)) {
        //are we able to open it?
        if ($dh = opendir($dir)) {
            //Let's cycle
            while (($subdir = readdir($dh)) !== false) {
                if ($subdir != "." && $subdir != "..") {

                    if (is_dir($subdir)) { 
                       echo $subdir;
                    }

                }
        }
}

Он ничего не печатает!

Почему это происходит? Я запускаю сценарий с Windows и XAMPP для тестирования. Каталог фактически содержит каталоги.

Спасибо

Ответы [ 3 ]

11 голосов
/ 19 апреля 2010

is_dir($dir . '/' . $subdir)

4 голосов
/ 19 апреля 2010

readdir () дает только имя файла / dir, а не полный путь (который явно нужен is_dir).

Найдено здесь - http://www.php.net/manual/en/function.is-dir.php#79622

1 голос
/ 19 апреля 2010

Это потому, что $dir - это полный путь, где $subdir - это только фрагмент пути

...