0

我有一个 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篇文章”

谢谢

4

5 回答 5

3

是的你可以:

glob('../{health,food,sport}/*.php', GLOB_BRACE);
于 2013-01-20T16:41:11.887 回答
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";
于 2013-01-20T16:43:09.933 回答
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 的回答更好。

于 2013-01-20T16:44:10.580 回答
1

像往常一样,划分你的问题通常要好得多。例如:

  • 获取文件(请参阅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>";
于 2013-01-20T16:51:00.617 回答
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);
    }
}
?>

基本上打开你第一次浏览的文件夹,然后循环计算每个不是文件夹的单个项目。

编辑: 似乎有人给出了比这更简单的解决方案。

于 2013-01-20T16:41:46.000 回答