4

私はこの機能を持っています:

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を使用してスクリプトを実行しています。ディレクトリには実際にはディレクトリが含まれています。

ありがとうございました

4

3 に答える 3

11

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

于 2010-04-19T10:14:48.527 に答える
4

readdir()はファイル/ディレクトリ名のみを提供し、フルパス(is_dirは明らかに必要)を提供しません。

ここにあります-http ://www.php.net/manual/en/function.is-dir.php#79622

于 2010-04-19T10:15:26.023 に答える
1

その理由$dirはフルパスであり$subdir、パスフラグメントのみであるためです。

于 2010-04-19T10:16:38.227 に答える