すべてのファイルとフォルダーを再帰的にカウントするスクリプトを書いています。2つのアプローチを試しましたが、それぞれが異なる値を返します。スクリプト1:2376スクリプト2:2178
2つのスクリプトは次のとおりです。
$source = 'folder';
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
foreach($files as $file) {
$result[] = $file.'<br />';
}
echo count($result).'<br />';
function listFolders($dir) {
if($dh = opendir($dir)) {
$files = Array();
$inner_files = Array();
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
if(is_dir($dir . "/" . $file)) {
$inner_files = listFolders($dir . "/" . $file);
if(is_array($inner_files)) $files = array_merge($files, $inner_files);
} else {
array_push($files, $dir . "/" . $file);
}
}
}
closedir($dh);
return $files;
}
}
foreach (listFolders($source) as $key=>$file){
$result2[] = $file ."<br />";
}
echo count($result2);
スクリプトの1つは正しいですか?私は何が欠けていますか?