【问题标题】:sum row data in csv file using php使用php对csv文件中的行数据求和
【发布时间】:2015-03-23 14:26:21
【问题描述】:

我正在尝试对 csv 文件中的单行数据(数字)求和,以使用 php.ini 显示总数。这是我的 csv 文件:

一个

0.01
0.1
0.02
0.01
0.02
0.01
0.02

基本上它会延伸。 A基本上是excel中的第一行字母。

基本上它会延伸。 我正在尝试用 PHP 总结行。

这是我目前的代码:

if (($handle = fopen("file.csv", "r")) !== FALSE) {
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
   $data = array();

   echo array_sum($data);
  }
}

我的输出基本上是:000000000000000000000000000000000000000000000000000

我似乎无法弄清楚为什么?谁能帮我解决这个问题?

【问题讨论】:

  • 看起来你应该对列求和,而不是对行求和
  • 你用一个空数组覆盖你的数据:$data = array(); echo array_sum($data);
  • 马克,我认为你是对的。史蒂夫我明白了,那我怎么能不覆盖它呢?
  • 知道了,解决了!感谢萨西!

标签: php arrays csv fgetcsv


【解决方案1】:

你可以这样试试

<?php
$file = fopen("file.csv","r");
$sum = 0;
while(!feof($file)) {
    $csv = fgetcsv($file,1024);
    if(!$csv[0]){
            print $sum."\n";
    }
    $sum = $sum + $csv[0];
}

或者在while循环之前声明数组

<?php
$file = fopen("file.csv","r");
$sum = array();
while(!feof($file)) {
    $csv = fgetcsv($file,1024);
    array_push($sum,$csv[0]);
}
echo array_sum($sum)."\n";

【讨论】:

  • 您是否收到任何错误或根本没有输出?我得到了 0.19 来明确尝试print $sum."\n";
  • 嘿Sasi,感谢您的帮助。但是没有输出任何内容。但是,当我删除!来自:if(!$csv[0]) 输出是整个数字列表加上最后的总数。但是,我只需要显示最后的总和,而不是全部。
  • 如果if(!$csv[0]) 是问题所在,那么试试我更新的代码,是否可以在while 循环中回显array_sum
  • 嗨,萨西,非常感谢!这解决了我的问题!感谢您的所有帮助!
猜你喜欢
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多