scandir返回[0]=>;.并且[1]=>;.阵列中


scandir returns [0] =>. and [1]=>.. in array

我有一个简单的PHP脚本,其中包含以下代码片段:

$files  = scandir($dir);    
print_r($files);

注意到在我的阵列中我有:

    [0] => .
    [1] => ..
    [2] => assets.php
    [3] => loader.php

这是我的服务器上的错误还是预期的行为,它们是什么?如果是后者,有没有办法将他们排除在扫描之外?因为我只想得到我从目录中制作的脚本文件,而不想得到其他文件。有没有办法将他们排除在扫描之外?

不,这不是一个bug。。。。.是当前目录,..是父目录

查看PHP文档

用户贡献的笔记显示了一种排除它们的方法:

$directory = '/path/to/my/directory';
$scanned_directory = array_diff(scandir($directory), array('..', '.'));

如果您使用除scandir之外的其他选项,例如SPL的DirectoryIdeator,则可以选择排除它们(例如将其与RegexIterator组合),或者在迭代时测试它们:

$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if (!$fileinfo->isDot()) {
        echo $fileinfo->getFilename() . "'n";
    }
}