What are some best practices for counting files and directories in PHP, especially when dealing with nested directories?
When counting files and directories in PHP, especially when dealing with nested directories, it's important to recursively iterate through each directory to accurately count all files and subdirectories. One common approach is to use a recursive function that traverses each directory, incrementing counters for files and directories along the way.
function countFilesAndDirectories($dir) {
$files = 0;
$directories = 0;
$list = scandir($dir);
foreach ($list as $item) {
if ($item != '.' && $item != '..') {
if (is_dir($dir . '/' . $item)) {
$directories++;
$subCounts = countFilesAndDirectories($dir . '/' . $item);
$files += $subCounts['files'];
$directories += $subCounts['directories'];
} else {
$files++;
}
}
}
return ['files' => $files, 'directories' => $directories];
}
$directory = 'path/to/directory';
$count = countFilesAndDirectories($directory);
echo "Total files: " . $count['files'] . PHP_EOL;
echo "Total directories: " . $count['directories'] . PHP_EOL;