您好,
我在名为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>";
}
然而,这就是我得到的:
<div>.</div>
<div>..</div>
<div>index</div>
<div>page1</div>
<div>page2</div>
<div>page3</div>
前两个元素是什么?我没有这样的文件,所以我不明白。
谢谢。
答案 0 :(得分:3)
。 - 是引用当前目录的特殊目录。
.. - 也是一个特殊目录,它引用了父目录。
要删除特殊目录,我可以考虑一些选项:
1
foreach(glob("*.php") as $filename) {
echo "<div>$filename</div>";
}
2
$files = array_diff(scandir("content"), array('..', '.'));
foreach($files as $file) { ... }
3
foreach ($files as $file) {
if($file != '.' and $file != '..') { ... }
}
以上所有都是替代方案。如果您使用scandir()
,则无需使用glob()
,反之亦然。 glob()
- 期待一种模式。也可以为它提供如下路径:
glob("[path]/*.php")
- 这将列出位于路径中的任何php文件。可以在PHP - glob()
glob()
文档
答案 1 :(得分:1)
$column = scandir("content");
foreach ($column as $value) {
$stvalue = str_replace(".php", "", $value);
if($stvalue != '.' || $stvalue != '..') {
echo "<div>$stvalue</div>";
}
}
答案 2 :(得分:0)
.
指的是当前目录。 ..
指的是父目录。
这就是在命令提示符下键入cd ..
将更改为父目录的原因。在DOS,每个版本的Windows,Mac OS X中都有这种方式,它不仅仅是Linux和UNIX的变体。
如果您不想在页面上显示它们,只需使用array_slice
跳过前两个条目。