Как посчитать сумму всех чисел в текстовом файле. PHP

12
DB
На сайте с 23.10.2010
Offline
36
2368

В txt файле хранятся размеры файлов в килобайтах, каждое число на новой строке:

433.2

2314.4

22.9

Помогите написать простой скриптик на php, которым всё это можно посчитать.

подпись
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#1

или массив перебирать через функцию file и foreach

или без, file_get_contents,str_replace (\r\n,+),eval

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#2


$arr = file('file-size.txt');
foreach($arr as $v)
{
$size += $v;
}
echo $size;

Надеюсь код в комментариях не нуждается😂

Подпись))
iqmaker
На сайте с 17.04.2012
Offline
309
#3
Милованов Ю.С:

$arr = file('file-size.txt');
foreach($arr as $v)
{
$size += $v;
}
echo $size;

Надеюсь код в комментариях не нуждается😂

А если файл пустой? Надо бы инициализировать переменную

Все таки пхп разврвщает

DB
На сайте с 23.10.2010
Offline
36
#4

тю, всё так просто...

---------- Добавлено 13.04.2013 в 20:03 ----------

Я думал с точкой не посчитает. 😂 Всем спасибо!

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#5

Зачем перебор :)

Без перебора, только хардкор :)

<?

$x=str_replace("\r\n",'+',file_get_contents('txt.txt'));

$summa =("\$summa=$x;");

eval($summa);

echo $summa;

?>

iqmaker
На сайте с 17.04.2012
Offline
309
#6
LEOnidUKG:
Без перебора, только хардкор

Что-то этот вариант не заработал у меня совсем

PHP Parse error:  syntax error, unexpected '2314.4' (T_DNUMBER) in /home/sbr/myprog/python/sum/p1.php(4) : eval()'d code on line

, но честно сказать он жесть если вести разговор в терминах объема памяти (размер string) и безопасности выполнения (eval)

Первый вариант выдает предупреждение:

Undefined variable: size in /home/sbr/myprog/python/sum/p1.php on line 5

Не удержался, вариант на python

print sum([ float(x) for x in open('f.txt')])
IL
На сайте с 20.04.2007
Offline
435
#7
iqmaker:
Что-то этот вариант не заработал у меня совсем

ОСь какая? Возможно, перенос строки, тот который PHP_EOL.. (хотя, опции "сохранить в формате Unix/Win" есть в разных редакторах)

iqmaker:
Не удержался, вариант на python

ждём perl.. и bc+sed/awk

p.s. ещё на Excel решение подскажут..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#8

iqmaker, странно у меня работает. Выдаёт результат: 2770.5

но честно сказать он жесть

Поэтому я и писал про хардкод. Не известно какой длинны файлы у ТС, + ничего страшного в eval не вижу.

А вообще у меня привычка искать несколько путей решение любой задачи :)

IL
На сайте с 20.04.2007
Offline
435
#9
LEOnidUKG:
+ ничего страшного в eval не вижу.

эт если формат файла задан и соблюдается.. про разделитель строк уже писал..

если строки пустые "++" будет

итд.

iqmaker
На сайте с 17.04.2012
Offline
309
#10
ivan-lev:
ОСь какая? Возможно, перенос строки, тот который PHP_EOL.. (хотя, опции "сохранить в формате Unix/Win" есть в разных редакторах)

Ubuntu 12.10, редактор vim, я понимаю, что вероятно дело в знаках, это ведь только подтверждает проблему :)

ivan-lev:
ждём perl.. и bc+sed/awk

Но красиво ведь :)

LEOnidUKG:
Поэтому я и писал про хардкод. Не известно какой длинны файлы у ТС, + ничего страшного в eval не вижу.
А вообще у меня привычка искать несколько путей решение любой задачи

Да я без претензий, раньше часто приходилось делать code-review, привычка :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий