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