对于一个新手和我的google fu来说,这个简单的问题让我很失望。使用php,如何计算给定目录中的文件数,包括任何子目录(以及它们可能拥有的任何子目录等)?例如,如果目录结构如下所示:
Dyja/
/目录A/file1.blah
/目录A/目录B/
/目录A/目录B/文件2.blah
/目录A/目录B/文件3.blah
/目录A/目录B/目录C/
/目录A/目录B/目录C/文件4.blah
/目录A/目录D/
/目录A/目录D/文件5.blah
对于“./dir_a”,脚本应返回“5”。
我已经拼凑了以下几点,但还没有完全返回正确答案,我也不知道为什么:
函数getfilecount($path='.',$filecount=0,$total=0){
$ignore=数组('cgi-bin','.','..','.ds-store');
$dh=@opendir($path);
while(错误!=($file=readdir($dh)){
如果(!)在数组($file,$ignore)中{
if(is_dir(“$path/$file”){
$file count=计数(glob(“$path/$file/”)。*)
$total+=$filecount;
echo$filecount;/*调试*/
echo“$total”;/*调试*/
echo“$path/$file”;/*调试*/
getfilecount(“$path/$file”,$filecount,$total);
}
}
}
返回$total;
}
我非常感谢你的帮助。
最佳答案
这应该可以做到:
function getFileCount($path) {
$size = 0;
$ignore = array('.','..','cgi-bin','.DS_Store');
$files = scandir($path);
foreach($files as $t) {
if(in_array($t, $ignore)) continue;
if (is_dir(rtrim($path, '/') . '/' . $t)) {
$size += getFileCount(rtrim($path, '/') . '/' . $t);
} else {
$size++;
}
}
return $size;
}