在Linux CentOS 5.5上使用PHP 5.3.3(稳定版)。
这是我的文件夹结构:
www/myFolder/
www/myFolder/testFolder/
www/myFolder/testFile.txt
对“myFolder”文件夹使用scandir(),我得到以下结果:
.
..
testFolder
testFile.txt
我正在尝试从结果中过滤出文件夹,只返回文件:
$scan = scandir('myFolder');
foreach($scan as $file)
{
if (!is_dir($file))
{
echo $file.'\n';
}
}
预期结果如下:
testFile.txt
但我实际上看到了:
testFile.txt
testFolder
有人可以告诉我这里出了什么问题吗?
答案 0 :(得分:9)
您需要更改目录或将其附加到测试中。当文件不存在时,is_dir
返回false。
$scan = scandir('myFolder');
foreach($scan as $file)
{
if (!is_dir("myFolder/$file"))
{
echo $file.'\n';
}
}
那应该做正确的事
答案 1 :(得分:2)
不是is_dir()将文件作为参数吗?
$scan = scandir('myFolder');
foreach($scan as $file)
{
if (!is_dir($file))
{
echo $file.'\n';
}
}
答案 2 :(得分:2)
此处已经告诉您答案:http://bugs.php.net/bug.php?id=52471
答案 3 :(得分:1)
如果您显示错误,您会明白为什么这不起作用:
Warning: Wrong parameter count for is_dir() in testFile.php on line 16
现在尝试将$ file传递给is_dir()
$scan = scandir('myFolder');
foreach($scan as $file)
{
if (!is_dir($file))
{
echo $file.'\n';
}
}
答案 4 :(得分:0)
如果有人来这里是有兴趣将输出保存到数组,这是一种快速的方法(修改为更有效:
$dirPath = 'dashboard';
$dir = scandir($dirPath);
foreach($dir as $index => &$item)
{
if(is_dir($dirPath. '/' . $item))
{
unset($dir[$index]);
}
}
$dir = array_values($dir);