0

我有以下代码来使用 php 计算文件夹中的文件数

$x=0;
$filepath=$uplaod_drive."Workspace/12345";
$dir = new DirectoryIterator($filepath);
foreach($dir as $file ){
  $x++;
}

但即使文件夹是空的,它也会显示 3 个文件,如果文件夹有 8 个文件,它会显示 11 个文件。

如果有人能解释这一点,我将非常感激..谢谢。

4

2 回答 2

2

如果您只想计算常规文件:

$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++; 
}
于 2013-07-27T21:06:54.560 回答
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->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;
于 2013-07-27T21:06:22.253 回答