как посчитать все файлы в паре папок вместе

#php #arrays #foreach

#php #массивы #предначертание

Вопрос:

В каталоге с именем articles у меня есть несколько .txt файлов и несколько подкаталогов, которые представляют год (например 2020 , 2019 , 2018 и так далее …)

Структура выглядит следующим образом:

 articles
   |-> 2020
        |-> 1.txt
            2.txt
            3.txt
   |-> 2019
        |-> 1.txt
            2.txt
            3.txt
   |-> 2018
        |-> 1.txt
            2.txt
            3.txt
   |-> main1.txt
       main2.txt
       main3.txt
 

Как я могу получить количество всех текстовых файлов, которые находятся в подкаталогах (2020, 2019, 2018 …)

У меня уже есть это:

 $archive_years = array_filter(glob('articles/*'), 'is_dir'); // read dir only
foreach($archive_years as $archive_year) {
    echo count(glob($archive_year.'/*.txt')); // number of txt files form each year
   // how count number of txt files from all years together??
}
 

Комментарии:

1. (не понизил голос) в чем проблема?

2. Поддерживайте переменную и продолжайте добавлять к ней значение count() . Я полагаю, вы не кодировали это в первую очередь.

3. Аналогичный пример, чтобы вам было проще 3v4l.org/l47pJ

4. Спасибо. Я не знал, что мне нужно было использовать =

5. Вы также можете использовать $count = $count count($data) . = это просто короткий способ написания.

Ответ №1:

Как насчет этого?

 <?php
$rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('path/to/your/dir'));
$files = array();

foreach ($rii as $file) {
    if ($file->isDir() || pathinfo($file, PATHINFO_EXTENSION) != "txt") {
        continue;
    }
    
    if (!isset($files[$file->getPath()])) {
        $files[$file->getPath()] = 0;
    }
    
    $files[$file->getPath()]  ;
    
}

var_dump($files);
 

Например, следующий вывод — это все .cpp файлы в каталоге моего проекта:

 array(10) {
  ["mypath/src/networking"]=>
  int(2)
  ["mypath/src/thirdpart/rncryptor"]=>
  int(3)
  ["mypath/src/thirdpart/QProgressIndicator"]=>
  int(1)
  ["mypath/src/model"]=>
  int(4)
  ["mypath/src/views"]=>
  int(8)
  ["mypath/src/helper"]=>
  int(5)
  ["mypath/src/helper/deviceclient"]=>
  int(3)
  ["mypath/src/helper/deviceclient/qwe"]=>
  int(6)
  ["mypath/src/helper/view"]=>
  int(1)
  ["mypath/src"]=>
  int(1)
}