所以我正在通过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);
}
?>
在什么情况下,.
或..
会被阅读?
答案 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";
}
...
这可以确保您不解析目录树,不会无休止地循环当前目录,并且忽略任何隐藏的文件/文件夹。