Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2018, 17:23   #1
mychatik
 
Аватар для mychatik
 
Регистрация: 06.05.2016
Сообщений: 7
По умолчанию Найти сумму подстрок во всех файлах

Подскажите, пожалуйста, как сделать?

Имеется папка users с файлами, в каждом содержится строка вида:
Код:
1000||1526208359||user||3092
Нужно найти общую сумму значений всех первых подстрок из всех файлов.
Количество файлов и значения могут быть любыми, от 0 и выше.

Количество файлов определяется так:
Код:
  $klient = new FilesystemIterator('temp/users/', FilesystemIterator::SKIP_DOTS);
  $klient = iterator_count($klient);
Значение подстроки файла получаем так:
Код:
   $ff = fopen("temp/users/".$file, "r") or die('<tr><td><b style="color:#ff0000;">ERROR</b></td></tr>');
    while (!feof($ff))
        {
   $vklad_usera  = fgets($ff, 1024);
   $razbivaem    = explode("||", $vklad_usera);
   $summa        = $razbivaem[0];
        }
Не могу понять, каким образом получить общую сумму всех вкладов.
Не пинайте сильно, я сам не программист, а учусь работая с сайтом...
mychatik вне форума Ответить с цитированием
Старый 14.05.2018, 11:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так нужно?

Код:
<?php

  $dir = '../temp/users/'; 

  $allsum = 0;
  $iterator = new FilesystemIterator($dir, FilesystemIterator::SKIP_DOTS);

  foreach($iterator as $entry) {
    print "filename = ".$entry->getFilename() . "<br>\n"; 
    $file = $dir.$entry->getFilename();
    $handle = fopen($file, "r") or die('<tr><td><b style="color:#ff0000;">ERROR - can`t open file '.$file.' </b></td></tr>');
    while (!feof($handle)){
       $stroka = fgets($handle, 1024);
       if($stroka !== false){
         $razbivaem = explode("||", $stroka);
         if(count($razbivaem)>1){
           $sum=intval($razbivaem[0]);
           print "\t sum=".$sum."<br>\n";
           $allsum += $sum;
         }
       }
    }
    fclose($handle);
  }
  print "<hr>All sum = ".$allsum."<br>\n";
?>
p.s. все print вставлены только для отображения/отладки - их можно выкинуть или поменять.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.05.2018, 02:51   #3
mychatik
 
Аватар для mychatik
 
Регистрация: 06.05.2016
Сообщений: 7
По умолчанию

Спасибо огромное за помощь!

Всё получилось!
mychatik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив а(n) типа SWORD. найти сумму всех отрицательных элементов массива.помогите найти ошибку Юлия123456 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.09.2016 06:12
Найти информацию во всех файлах inkognitik Общие вопросы C/C++ 5 14.12.2015 20:06
Найти сумму всех элементов ksu04061992 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 09.12.2014 10:15
найти сумму всех делителей числа (С++) yula92 Помощь студентам 13 19.05.2010 00:02
Как посчитать сумму строк во всех текстовых файлах? qwestor PHP 8 30.12.2007 16:02