获取子文件夹的数量

时间:2016-01-29 22:10:15

标签: php count glob

我使用count(glob("test/*"))来计算test文件夹中的子文件夹,但现在我还有test文件夹中的文件,而不仅仅是文件夹,我的结果不正确。有没有办法修改glob模式,以便它只返回文件夹,而不是文件?

我考虑过一种解决方法。获取文件夹和文件的总数,仅获取文件数,然后从整数中减去文件数。

$total_items  = count(glob("test/*"));
$total_files  = count(glob("test/*.*"));
$folder_count = $total_items - $total_files;

这样可行,但可能有一种更简单的方法。

3 个答案:

答案 0 :(得分:10)

您必须使用选项$dir = "test"; $n = 0; $dh = opendir($dir); while (($file = readdir($dh)) !== false) { if ($file != "." && $file != ".." && is_dir($dir . DIRECTORY_SEPARATOR . $file)) { $n++; } } closedir($dh); echo $n . " subdirectories in " . $dir; 才能返回目录:

GLOB_ONLYDIR

答案 1 :(得分:1)

如果目录中的点名为some.dir,则您当前的解决方案可能会失败。为了获得更好的结果,您可以检查每个结果以查看它们是否是文件。类似的东西:

count(array_filter(glob("test/*"), "is_dir"))

答案 2 :(得分:0)

我会尝试这样的事情,使用readdir()并使用is_dir()测试(http://php.net/manual/en/function.opendir.php

{{#if isInRole 'manage-team' 'manchester-united.com'}}
    <h3>Manage Team things go here!</h3>
{{/if}}