gpt4 book ai didi

php - 计算每个文件夹中的文件

转载 作者:可可西里 更新时间:2023-10-31 23:05:10 24 4
gpt4 key购买 nike

我试着统计每个子文件夹中的文件数。例如

第一个子文件夹:4个文件
第二个子文件夹:6 个文件...

现在我的函数计算我在数组中选择的目录中的文件:

if (!is_dir($subentry) && $gallery_dir[0]) {

如何计算和列出每个子目录中的文件数?但不是对所有子目录中的元素求和,而是在每个子目录中从 0 开始计数。

这是我到目前为止尝试过的:

$folderCount = $fileCount = $galleryItemCount = 0;
$dir ='./product_img/';
//. means current directory
//if you wanna a learn a folders inside use opendir('path')
$gallery_dir = array();
$gallery_subdir = array();
if ($handle = opendir($dir)) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
if (is_dir($dir.$entry)) {
echo "Folder => " . $entry . "<br>";

$gallery_dir[] = $entry;

if ($subdir = opendir($dir.$entry)) {
while (false !== ($subentry = readdir($subdir))) {
if ($subentry != "." && $subentry != "..") {
if (!is_dir($subentry) && $gallery_dir[0]) {
echo "Folderrrr => " . $subentry . "<br>";
$gallery_subdir[] = $subentry;
$galleryItemCount++;
echo $gallery_dir;
}
}
}
closedir($subdir);
}
$folderCount++;
} else {
echo "File => " . $entry . "<br>";
$fileCount++;
}
}
}
//echo $galleryItemCount++;
echo "<br><br>";
echo "File in aech folder" . $galleryItemCount. "<br />";
echo "Total Folder Count : " . $folderCount . "<br>" ;
echo "Total File Count : " . $fileCount;
closedir($handle);
}

最佳答案

您可以使用迭代器来做到这一点。不过,获取每个文件夹的文件数有点棘手。

首先,连接迭代器。传递你要遍历的路径:

$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(
'/path/you/want/to/traverse',
RecursiveDirectoryIterator::SKIP_DOTS
),
RecursiveIteratorIterator::SELF_FIRST
);

SKIP_DOTS 选项将使 RecursiveDirectoryIterator 忽略 ...。包含目录需要选项 SELF_FIRST。默认情况下,只离开,例如文件,被考虑。

连接好迭代器后,您只需要做

foreach ($iterator as $fileObject) {
if ($fileObject->isDir()) {
$fileObject->setInfoClass(FilesystemIterator::class);
$directoryIterator = $fileObject->getFileInfo();
$directoryIterator->setFlags(FilesystemIterator::SKIP_DOTS);
$fileCount = iterator_count($directoryIterator);

echo "$fileObject => $fileCount", PHP_EOL;
}
}

这将打印每个文件夹名称以及每个文件夹中的文件数。就像我说的,获取文件计数有点棘手。这是因为默认情况下 foreach 将返回目录的 SplFileObject 实例。那些是不可数的。因此我们需要设置 FileSystemIterator。那是可以算的。

注意:如果您的 PHP 版本尚不支持 FilesystemIterator::class,请更新到更新的版本或将 'FileSystemIterator' 作为字符串传递。

关于php - 计算每个文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com