За последние 24 часа нас посетили 17570 программистов и 1719 роботов. Сейчас ищут 1827 программистов ...

Сложение чисел из файла

Тема в разделе "PHP для новичков", создана пользователем Игорь_Vasinsky, 13 ноя 2008.

  1. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Здраствуйте. Нужна помощь. Вообщем проблема вот в чём: :shock: Есть txt файл, в который переодически записываются данные (а именно числа), причём формат записи вот такого типа:1|12|0|32, в общем разделены эти числа "чёрточкой". Мне нужно сложить все эти числа и выдать результат на php страничку. Сам то я могу изменять чужие скрипты под себя, а вот такого примера ни где не встречал. Вот. Буду оч. признателен. Спасиб.
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    file_get_contents()
    explode()
    for()
    trim() // возможно
     
  3. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Между explode() и for() наверно нужно ещё count().
     
  4. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Из этого я понял только то что нужно вытащить содержимое файла, указать разделитель... и всё. Если можно то по конкретней пожайлуста.

    к примеру файл show.txt

    и саму функцию сложения.

    или может проще открыть файл, считать содержимое, отсеять цыфры, записать в массив, а потом уж сложить.
     
  5. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    Ух, добрый я сёдня, держи:

    Код (Text):
    1.  
    2. $data_array = file('show.txt'); // $data_array - массив строк файла, бит по разделителю \n
    3. foreach($data as $str)
    4. {
    5. $digits_array = explode('|', $str);
    6. /* терь $digits_array содержит массив всех чисел конкретной строки
    7.    дальше сам думай что тебе и с чем надо складывать
    8.   последний элемент может содержать \r в конце, так как все элементы массива
    9.   сейчас типа string
    10. */
    11. }
     
  6. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Прости за наглость, но раз уж добрый то вот такой вот скрипт, в котором считывается кол-во кликов по определённой ссылке, в конце нужно добавить то что ты описал (самостоятельно я тока иогу открыть файл, считать данные и записать их в другой... что то вроде того:))

    Код (Text):
    1.  
    2. <?
    3.  
    4. include ("count.txt");
    5. include ("url.txt");
    6. $kolvo=explode("|",$count);
    7. $urli=explode("|",$ssilka);
    8. $kolvo1=count($kolvo);
    9. $urli1=count($urli);
    10.  
    11.  
    12. //Скачка и запись (вместо ссылки include 'http://java.ru/download.php?show=1)
    13. if(isset($id)){
    14. if($id>$kolvo1){exit;}
    15. if($id<1){exit;}
    16.  
    17. $id--;
    18. $kolvo[$id]++;
    19. $newkolvo=implode("|",$kolvo);
    20.  
    21. $f=fopen("count.txt","a+");
    22. flock($f,LOCK_EX);
    23. ftruncate($f,0);
    24. $kav='"';
    25. $tuc=';';
    26. $e= '$count=';
    27. $newkolvo2=$e.$kav.$newkolvo.$kav.$tuc."\n";
    28.  
    29.  
    30. $kaka1="<?\n";
    31. $kaka2="?>";
    32.  
    33. fwrite($f,$kaka1);
    34.  
    35. fwrite($f,$newkolvo2);
    36.  
    37. fwrite($f,$kaka2);
    38.  
    39. flock($f,LOCK_UN);
    40. fclose($f);
    41.  
    42. header ("location: ".$urli[$id]);
    43. }
    44.  
    45. //Просмотр типа  include 'http://java.ru/download.php?show=1';
    46. if (isset($show)){
    47. if($show>$kolvo1){exit;}
    48. if($show<1){exit;}
    49. $show--;
    50. echo $kolvo[$show];
    51. exit;
    52. }
    53.  
    54. ?>
     
  7. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Где то ошибка
    Warning: Invalid argument supplied for foreach() in

    as - что это?
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    PHP:
    1. $data_array = file('show.txt'); // $data_array - массив строк файла, бит по разделителю \n
    2. foreach($data as $str)
    Может
    PHP:
    1. foreach($data_array as $str)
    ?
     
  9. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
  10. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    мне понравиось. тока вот не сложилось.
     
  11. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    А у меня сложилось, чудеса.
     
  12. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Друзья а где же проверка на существование файла)))))
     
  13. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Скорее всего проблема в том что полное содержание файла

    Код (Text):
    1. <?
    2. $count="2|0|0|0|0|1|0|0|0";
    3. ?>
    Видимо сначало нужно отсеять лишнее, а потом твой вариант. а как я не в курсе.
     
  14. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Игорь_Vasinsky, а ты попробуй-ка так:
    PHP:
    1. <?php echo array_sum(explode("|", join("", file("file.txt")))); ?>
     
  15. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Проверка в принципе не нужна, файл будет.:)) вот луче по подробней как убрать лишее из файла , а может просто исключить первые 8 символов и 2 последних.
     
  16. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Или
    PHP:
    1. <?php
    2. include(file.txt);
    3. echo array_sum(explode("|", $count));
    4. ?>
     
  17. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    я вот так делал:
    Код (Text):
    1.  
    2. $sum = array_sum(explode("|", join("", file("file.txt"))));
    3. echo $sum;
    это же равносильно. тож не помогает. Почемут показывает что насчитал только 1 (хотя по сути =5)
     
  18. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Покажи полное содержимое txt-файла.
     
  19. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
     
  20. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Vitas
    Выше он показал уже содержимое этого файла, поэтому я предложил такой вариант.
     
  21. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа

    Вот это спасло! Спасиб всем за помощь ! Оказалось всё просто. Теперь буду меньше тормозить.!
     
  22. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Вот такое он содержал:

    <?
    $count="2|0|0|0|0|1|0|0|0";
    ?>
     
  23. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Мда. :-/
     
  24. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
  25. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Мне понравилось участвовать в обсуждении. тараканы начали бегать быстрее в голове. Теперь мне захотелось большего.