子目录“。”和“..”| PHP

时间:2010-11-12 16:34:38

标签: php directory

为什么PHP在读取目录时会输出两个具有:...的子目录。

来自PHP.net:

<?php
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
        }
        closedir($dh);
    }
}
?>

输出:

filename: . : filetype: dir
filename: .. : filetype: dir
filename: apache : filetype: dir
filename: cgi : filetype: dir
filename: cli : filetype: dir

为什么这样做?

3 个答案:

答案 0 :(得分:10)

因为“。”和“..”是实际目录(在* nix世界中)。

“”。指当前目录
“..”指的是父目录。

如果你做“ls”,你会看到完全相同的输出。

答案 1 :(得分:2)

...是当前和父目录的符号链接,它们存在于大多数文件系统中,因此如果您不希望这些在代码的dir列表中显示,请尝试这样:

$skipped = array('.', '..'); 
while (($file = readdir($dh)) !== false) {
   if(in_array($file, $skipped)) continue;
   echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);

答案 2 :(得分:0)

如果您不需要glob().条目,请使用..