Создаём функцию для подсчёта количество файлов в папке (директории) PHP
Приступим к созданию функции:
1. dir() возвращает экземпляр класса directory. Аргумент - путь к директории.
2. read() метод, который читает директорию.
3. close() после прочтения закрываем директорию
С используемым функционалом разобрались, можно переходить к созданию файла с функцией. В корневой директории (вы можете на своё усмотрение выбрать другую) создаём папку include. В ней создадим файл будущей функции и назовём его functions.php. Далее вставляем в него указанный ниже код.
Код PHP (файл functions.php)
function count_files($dir){
$c=0; // количество файлов. Считаем с нуля
$d=dir($dir); //
while($str=$d->read()){
if($str{0}!='.'){
if(is_dir($dir.'/'.$str)) $c+=count_files($dir.'/'.$str);
else $c++;
};
}
$d->close(); // закрываем директорию
return $c;
}
Функция готова. В корневой директории (папке) можем уже создать рабочий файл с любым названием (в примере его назвал example.php), а в нём данную функцию будем подключать следующим образом.
Код PHP (файл example.php)
include_once "include/functions.php";
$count = count_files('images/photo'); // сколько фото в папке
echo "Файлов в папке ".$count;
В качестве результата работы функции можете увидеть строку вида
Файлов в папке: 52
Вычисляем количество файлов конкретного типа в папке PHP
Бывают и другие случаи, когда в большом количестве файлов директории нужно найти либо изображения с определённым расширением, либо файлы flash, либо, например, таблицы MS Excel. В приведенном ниже примере рассмотрен вариант с файлами с расширением .jpg
<?php
$path = 'images'; // название папки в той же директории, что и файл
$dir = opendir ("$path"); // открываем директорию
$i = 0; // создаём переменную для цикла
while (false !== ($file = readdir($dir))) {
// ниже указываем расширение файла. Вместо jpg выбираете нужный
if (strpos($file, '.jpg',1) ) {
$i++;
}
}
echo "Файлов jpg в папке: ".$i;
?>
Результат работы
Файлов jpg в папке: 41
Внимание! Если хотите указать больше одного типа файлов, например, нужны все изображения, а это jpg, gif, png и так далее, то замените строку
if (strpos($file, '.jpg',1) ) {
на
if(!is_dir($file) && (strpos($file, '.jpg')>0 || strpos($file, '.gif')>0 || strpos($file, '.png')>0) ) {
Добавлять файлы с другими расширениями можно по аналогии.
Спасибо за внимание!