1

ユーザーが自分のフォルダーにいくつかのファイル (写真) をアップロードできるようにしたいと考えています。ただし、これは、そのフォルダーに含まれる画像が 5 枚未満の場合にのみ可能です。既に 5 つの画像がある場合、スクリプトは、ユーザーのフォルダーがいっぱいであることをユーザーに通知する必要があります。ということで、フォルダ内のファイル数をカウントする関数がphpにあるのかな。またはそれを行うPHPの他の方法はありますか?前もって感謝します。

4

6 に答える 6

9

次のように使用しFilesystemIteratorます。

$dir = "/path/to/folder";
$fi = new FilesystemIterator($dir, FilesystemIterator::SKIP_DOTS);
$fileCount = iterator_count($fi);
于 2013-09-03T13:38:39.247 に答える
1

私はdopsの回答が本当に好きですが、ファイル、ディレクトリ、およびシンボリックリンクの数を返しますが、これは目標ではない可能性があります。ディレクトリ内のローカル ファイルの数だけが必要な場合は、次を使用できます。

$path = "/path/to/folder";
$fs = new FilesystemIterator($path);
foreach($fs as $file) {
   $file->isFile() ?  ++$filecount : $filecount;
}
于 2013-09-03T14:10:51.927 に答える
0

ここにあるこの小さな関数は、少し前に見つけたコードを変更したもので、すべてのサブフォルダーとそれらのフォルダー内のすべてもカウントします。

<?PHP


$folderCount = $fileCount = 0;

countStuff('.', $fileCount, $folderCount);

function countStuff($handle, &$fileCount, &$folderCount)
{
    if ($handle = opendir($handle)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                if (is_dir($entry)) {
                    echo "Folder => " . $entry . "<br>";
                    countStuff($entry, $fileCount, $folderCount);
                    $folderCount++;
                } else {
                    echo "File   => " . $entry . "<br>";
                    $fileCount++;
                }
            }
        }
        closedir($handle);
    }
}
echo "<br>==============<br>";
echo "Total Folder Count : " . $folderCount . "<br>";
echo "Total File Count : " . $fileCount;

?>

注:以下のサブフォルダーの子ではなく、親ディレクトリのファイルとフォルダーのみをカウントする元のコードも投稿します。

if ($handle = opendir('.')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            if (is_dir($entry)) {
                echo "Folder => " . $entry . "<br>";
                countStuff($entry, $fileCount, $folderCount);
                $folderCount++;
            } else {
                echo "File   => " . $entry . "<br>";
                $fileCount++;
            }
        }
    }
    echo "<br>==============<br>";
    echo "Total Folder Count : " . $folderCount . "<br>";
    echo "Total File Count : " . $fileCount;
    closedir($handle);
}
于 2014-09-18T19:55:15.227 に答える
0

使用できます

$nbFiles=count(scandir('myDirectory'))-2;

(-2 は "." と ".." を削除するためのものです)

于 2013-09-03T13:39:02.340 に答える