views:

100

answers:

3

I have this function:

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;

                }
        }
}

This returns:

directory1 , directory2, directory3 etc.. etc..

Hoever if I do this:

    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;
                    }

                }
        }
}

It doesn't print nothing!

Why does this happens? I'm running the script withing windows and XAMPP for testing purposes. The directory does in fact contain directories.

Thank you

+4  A: 

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

binaryLV
+2  A: 

readdir() only gives the file/dir name and not the full path (which is_dir apparently needs).

Found here - http://www.php.net/manual/en/function.is-dir.php#79622

MatW
+1  A: 

Its because $dir is a full path where as $subdir is only a path fragment

seengee