php计算来自多个文件夹和echo total的文件

时间:2013-01-20 16:33:43

标签: php directory

我有一个PHP代码,它会显示我在文件夹中的文件数量。

代码:这将在我的页面上回应这个,“共有119条

$directory = "../health/";
if (glob($directory . "*.php") != false) /* change php to the file you require either html php jpg png. */ {
    $filecount = count(glob($directory . "*.php")); /* change php to the file you require either html php jpg png. */
    echo "<p>There are a total of";
    echo " $filecount ";
    echo "Articles</p>";
} else {
    echo 0;
}

问题:

我想要计算27个或更多文件夹中的文件并回显文件总量。

有没有我可以添加要打开的文件夹列表,如:

$directory = "../health/","../food/","../sport/";

然后它将统计所有文件并显示总数“总共有394篇文章”

由于

5 个答案:

答案 0 :(得分:3)

是的,你可以:

glob('../{health,food,sport}/*.php', GLOB_BRACE);

答案 1 :(得分:1)

毫无疑问,这比clover的回答效率低:

$count = 0;
$dirs = array("../health/","../food/","../sport/");
foreach($dirs as $dir){
    if($files = glob($dir."*.php")){
        $count += count($files);
    }
}

echo "There are a total of $count Articles";

答案 2 :(得分:1)

一个简单的答案就是使用一个数组和一个循环。这是你自己可以想到的东西。

$directories = array('../health/', '../food/', '../sport/');
$count = 0;
foreach ($directories as $dir) {
    $files = glob("{$dir}*.php") ?: array();
    $count += count($files);
}
echo "<p>There are a total of {$count} articles</p>";

但@ clover的答案更好。

答案 3 :(得分:1)

像往常一样,划分问题通常要好得多。 E.g:

  • 获取文件(参见glob)。
  • 计算glob结果的文件(编写一个处理FALSEArray两个案例的函数。)。
  • 做输出(不要在其他代码中做输出,最后做,使用变量(就像你已经做的那样,只是分开输出))。

一些示例代码:

/**
 * @param array|FALSE $mixed
 * @return int
 * @throws InvalidArgumentException
 */
function array_count($mixed) {

    if (false === $mixed) {
        return 0;
    }
    if (!is_array($mixed)) {
        throw new InvalidArgumentException('Parameter must be FALSE or an array.');
    }

    return count($mixed);
}

$directories = array("health", "food", "string");
$pattern     = sprintf('../{%s}/*.php', implode(',', $directories));
$files       = glob($pattern, GLOB_BRACE);
$filecount   = array_count($files);

echo "<p>There are a total of ", $filecount, " Article(s)</p>";

答案 4 :(得分:0)

您可以使用此处说明的opendir命令: http://www.php.net/manual/en/function.opendir.php

结合上一个链接中显示的示例:

<?php
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
        }
        closedir($dh);
    }
}
?>

基本上打开您首先经历的文件夹并在循环中计算每个不是文件夹的单个项目。

修改 似乎有人提供了比这更简单的解决方案。