php scandir 产生额外的元素(2 点)

Cai*_*uke 4 scandir

你好,

我在名为 content 的目录中有以下文件:仅 index.php、page1.php、page2.php 和 page3.php。

然后我有这个代码:

 $column = scandir("content");
 foreach ($column as $value) {   
  $stvalue = str_replace(".php", "", $value);    
  echo "<div>$stvalue</div>";
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,这就是我得到的:

<div>.</div>
<div>..</div>
<div>index</div>
<div>page1</div>
<div>page2</div>
<div>page3</div>
Run Code Online (Sandbox Code Playgroud)

前两个元素是什么?我没有这样命名的文件,所以我不明白。

谢谢你。

MaD*_*MaD 5

. - 是引用当前目录的特殊目录。

.. - 也是一个特殊目录,它引用父目录。

要删除特殊目录,我可以想到一些选项:

1.

foreach(glob("*.php") as $filename) {
    echo "<div>$filename</div>";
}
Run Code Online (Sandbox Code Playgroud)

2.

$files = array_diff(scandir("content"), array('..', '.'));
foreach($files as $file) { ... }
Run Code Online (Sandbox Code Playgroud)

3.

foreach ($files as $file) {    
    if($file != '.' and $file != '..') { ... } 
}
Run Code Online (Sandbox Code Playgroud)

以上都是备选方案。scandir()如果您使用glob(),则不需要使用,反之亦然。glob()- 期待一个模式。也可以为它提供这样的路径:
glob("[path]/*.php")- 这将列出位于路径中的任何 php 文件。glob()文档可以在这里找到PHP - glob()