PHP阅读目录

时间:2012-04-30 16:35:19

标签: php directory

所以我正在通过PHP Docs阅读和编写PHP文件,这里有一个我不太明白的例子:

http://php.net/manual/en/function.readdir.php

如果最后它显示了这样一个例子:

<?php
if ($handle = opendir('.')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "$entry\n";
        }
    }
    closedir($handle);
}
?>

在什么情况下,...会被阅读?

4 个答案:

答案 0 :(得分:3)

readdir API调用遍历所有目录。因此,假设您遍历当前目录(由“.”表示),那么您将进入无限循环。此外,避免迭代父目录(由“..”表示)将列表限制在当前目录及其下方。

希望有所帮助。

答案 1 :(得分:1)

如果您想使用PHP读取目录,我建议您使用scandir功能。下面是scandir的演示

$path = __DIR__.'/images';
$contents = scandir($path);
foreach($contents as $current){
  if($current === '.' || $current === '..') continue ;
  if(is_dir("$path/$current")){
    echo 'I am a directory';
  } elseif($path[0] == '.'){
    echo "I am a file with a name starting with dot";
  } else {
    echo 'I am a file';
  }
}

答案 2 :(得分:0)

因为在UNIX文件系统中,...就像路标一样,据我所知。无论如何,当然这个PHP函数。

将它们留在那里,否则会得到一些奇怪的结果(比如无限循环等)!

答案 3 :(得分:0)

在* nix中。是目前的工作目录,..是父目录。但是任何文件或目录前面都有'。'被认为是隐藏的,所以我更喜欢以下内容:

...
if ($entry[0] !== '.') {
    echo "$entry\n";
}
...

这可以确保您不解析目录树,不会无休止地循环当前目录,并且忽略任何隐藏的文件/文件夹。