php scandir 产生额外的元素(2 个点)
php scandir produces extra elements (2 dots)
嗨,
我在名为 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>
前两个元素是什么?我没有这样命名的文件,所以我不明白。
谢谢。
.
指的是当前目录。 ..
指的是父目录。
这就是为什么在命令提示符下键入 cd ..
将更改为父目录的原因。在DOS,Windows,Mac OS X的每个版本都是这样,不仅仅是Linux和UNIX变体。
如果您不想在您的页面上显示它们,只需使用 array_slice
跳过前两个条目。
$column = scandir("content");
foreach ($column as $value) {
$stvalue = str_replace(".php", "", $value);
if($stvalue != '.' || $stvalue != '..') {
echo "<div>$stvalue</div>";
}
}
。 - 是引用当前目录的特殊目录。
.. - 也是一个特殊目录,它引用父目录。
要删除特殊目录,我可以想到一些选项:
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 != '..') { ... }
}
以上都是备选方案。如果您使用 glob()
,则不需要使用 scandir()
,反之亦然。 glob()
- 需要一个模式。也可以为它提供这样的路径:
glob("[path]/*.php")
- 这将列出位于路径中的任何 php 文件。 glob()
可以在此处找到文档 PHP - glob()
嗨,
我在名为 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>
前两个元素是什么?我没有这样命名的文件,所以我不明白。
谢谢。
.
指的是当前目录。 ..
指的是父目录。
这就是为什么在命令提示符下键入 cd ..
将更改为父目录的原因。在DOS,Windows,Mac OS X的每个版本都是这样,不仅仅是Linux和UNIX变体。
如果您不想在您的页面上显示它们,只需使用 array_slice
跳过前两个条目。
$column = scandir("content");
foreach ($column as $value) {
$stvalue = str_replace(".php", "", $value);
if($stvalue != '.' || $stvalue != '..') {
echo "<div>$stvalue</div>";
}
}
。 - 是引用当前目录的特殊目录。
.. - 也是一个特殊目录,它引用父目录。
要删除特殊目录,我可以想到一些选项:
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 != '..') { ... }
}
以上都是备选方案。如果您使用 glob()
,则不需要使用 scandir()
,反之亦然。 glob()
- 需要一个模式。也可以为它提供这样的路径:
glob("[path]/*.php")
- 这将列出位于路径中的任何 php 文件。 glob()
可以在此处找到文档 PHP - glob()