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)。
  • 結果のファイルを数えます(2 つのandケース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 に答える