0

所以我正在通过 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

4 回答 4

3

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

希望有帮助。

于 2012-04-30T16:38:40.657 回答
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';
  }
}
于 2013-12-30T17:06:22.530 回答
0

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

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

于 2012-04-30T16:42:51.607 回答
0

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

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

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

于 2012-04-30T16:56:37.777 回答