我有以下代码来计算使用php
的文件夹中的文件数$x=0;
$filepath=$uplaod_drive."Workspace/12345";
$dir = new DirectoryIterator($filepath);
foreach($dir as $file ){
$x++;
}
但即使该文件夹为空,它也会显示3个文件,如果该文件夹有8个文件则显示11个文件。
如果有人能解释一下,我会非常感激。谢谢。
答案 0 :(得分:1)
如果您只想计算常规文件:
$x=0;
$filepath=$uplaod_drive."Workspace/12345";
$dir = new DirectoryIterator($filepath);
foreach($dir as $file ){
if ($file->isFile()) $x++;
}
或者如果您想跳过目录:
$x=0;
$filepath=$uplaod_drive."Workspace/12345";
$dir = new DirectoryIterator($filepath);
foreach($dir as $file ){
if (!$file->isDir()) $x++;
}
或者如果你想跳过点文件:
$x=0;
$filepath=$uplaod_drive."Workspace/12345";
$dir = new DirectoryIterator($filepath);
foreach($dir as $file ){
if (!$file->isDot()) $x++;
}
答案 1 :(得分:0)
DirectoryIterator将当前目录(用'。'表示)和前一个目录(用'..'表示)计为$ files。像这样调试你的代码。
$x=0;
$filepath='C:\xampp\htdocs\\';
$dir = new DirectoryIterator($filepath);
foreach($dir as $file ){
echo $file . "<br/>";
$x++;
}
echo $x;
然后正如@Prix上面的评论中提到的那样,你可以跳过$ file-&gt; isDot(),如果你不想计算目录,那么如果不是$ file-&gt; isFile()也会跳过。< / p>
$x=0;
$filepath='C:\xampp\htdocs\\';
$dir = new DirectoryIterator($filepath);
foreach($dir as $file ){
if ($file->isDot() || !$file->isFile()) continue;
//echo $file . "<br/>";
$x++;
}
echo $x;