Подкаталоги "." и ".." | PHP - PullRequest
       10

Подкаталоги "." и ".." | PHP

0 голосов
/ 12 ноября 2010

Почему 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 ]

10 голосов
/ 12 ноября 2010

Потому что "."и ".." - это действительные каталоги (в мире * nix).

"."ссылается на текущий каталог
".." ссылается на родительский каталог.

Если вы введете "ls", вы увидите точно такой же вывод.

2 голосов
/ 12 ноября 2010

. и .. являются символическими ссылками на текущий и родительский каталог и присутствуют в большинстве файловых систем, поэтому, если вы не хотите, чтобы они отображались в списке dir в вашем коде, попробуйте следующее:

$skipped = array('.', '..'); 
while (($file = readdir($dh)) !== false) {
   if(in_array($file, $skipped)) continue;
   echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
0 голосов
/ 12 ноября 2010

Вместо этого используйте glob(), если вам не нужны записи . и ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...