Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

Имеется папка 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, 12:02   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,495
Репутация: 5308
По умолчанию

так нужно?

Код:

<?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, 03:51   #3
mychatik
 
Аватар для mychatik
 
Регистрация: 06.05.2016
Сообщений: 7
Репутация: 10
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


10:00.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru