PHP:使用scandir(),文件夹被视为文件

Rea*_*ado 4 php scandir

在Linux CentOS 5.5上使用PHP 5.3.3(稳定版).

这是我的文件夹结构:

www/myFolder/
www/myFolder/testFolder/
www/myFolder/testFile.txt
Run Code Online (Sandbox Code Playgroud)

使用scandir()对"myFolder"文件夹我得到以下结果:

.
..
testFolder
testFile.txt
Run Code Online (Sandbox Code Playgroud)

我正在尝试从结果中过滤掉文件夹,只返回文件:

$scan = scandir('myFolder');

foreach($scan as $file)
{
    if (!is_dir($file))
    {
        echo $file.'\n';
    }
}
Run Code Online (Sandbox Code Playgroud)

预期结果是:

testFile.txt
Run Code Online (Sandbox Code Playgroud)

但是我实际上看到了:

testFile.txt
testFolder
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里出了什么问题?

Cfr*_*eak 9

您需要更改目录或将其附加到测试中.is_dir文件不存在时返回false.

$scan = scandir('myFolder');

foreach($scan as $file)
{
    if (!is_dir("myFolder/$file"))
    {
        echo $file.'\n';
    }
}
Run Code Online (Sandbox Code Playgroud)

那应该做对了

  • 或者您也可以使用 is_file() 函数来遵循正逻辑。例如: if(is_file("myFolder/".$file)) { // 做 smthing } (3认同)