【问题标题】:Make calculations in csv with php用 php 在 csv 中进行计算
【发布时间】:2016-04-06 12:46:35
【问题描述】:

首先让我自我介绍一下: 我 33 岁。'住在荷兰,如果谈到 php,我是个新手 :)

我的 vps httpdocs\data\1day.csv 上有一个 csv 文件。在这个文件中有两列:日期时间和值。该文件如下所示:

"datetime","value",
"2016-01-02 10:50:01","1060.9",
"2016-01-02 10:45:01","1060.6",

我想对文件 1day.csv 做一个简单的计算并将其保存到另一个 csv 文件。假设计算将是值 * 5:

"datetime","value","value2",
"2016-01-02 10:50:01","1060.9","5304.5",
"2016-01-02 10:45:01","1060.9","5304.5",

需要对整个“值”列进行计算。

我想用 php 来做这件事,让一个 cronjob 每 x 分钟执行一次这个脚本。

任何人都可以帮助我朝正确的方向前进吗?

【问题讨论】:

标签: php csv


【解决方案1】:

我可能会做得更简单。如果您不知道有多少列,您可以执行额外的循环来获取列名,但看起来没有必要。

$output = "datetime, value1, value2\n"; // Column names
while ($row = mysql_fetch_array($sql)) {
  $output .='"' . $row[0] . '" ,';
  $output .='"' . $row[1] . '" ,';
  $output .='"' . ($row[1] * 5) . '"';
  $output .="\n";
}

【讨论】:

  • 亲爱的@stubben,感谢您的回答。当我使用您的代码时,我得到(第一行):datetime, value1, value2"2016-01-03 00:40:02" ,"" ,"0" 并且所有其他行都是:"2016-01-03 00:35:01" ,"" ,"0"
  • 第一个哦 :-), $output = "datetime, value1, value2\n"; 第二个哦... mysql_fetch_array (如果你使用 mysql_fetch_assoc php.net/manual/en/function.mysql-fetch-assoc.php 它会工作)。使用$row[0] 作为第一个值,$row[1] 作为第二个值。抱歉,但我没有测试 :-( 我已经更新了我的示例。
  • 亲爱的@stubben,您更新的示例运行完美!非常感谢!
【解决方案2】:

@riggsfolly

好的。这是我到目前为止得到的:

// Database Connection

$host="localhost";
$uname="xxxxx";
$pass="xxxxx";
$database = "xxxxx"; 

$connection=mysql_connect($host,$uname,$pass); 

echo mysql_error();

//or die("Database Connection Failed");
$selectdb=mysql_select_db($database) or 
die("Database could not be selected"); 
$result=mysql_select_db($database)
or die("database cannot be selected <br>");

// Fetch Record from Database

$output = "";
$table = "quotes"; // Enter Your Table Name 
$sql = mysql_query("select datetime, value from $table where type = '5' order by datetime desc limit 333");
$columns_total = mysql_num_fields($sql);

// Get The Field Name

for ($i = 0; $i < $columns_total; $i++) {
$heading = mysql_field_name($sql, $i);
$output .= '"'.$heading.'",';
}
$output .="\n";

// Get Records from the table

while ($row = mysql_fetch_array($sql)) {
for ($i = 0; $i < $columns_total; $i++) {
$output .='"'.$row["$i"].'",';
}
$output .="\n";
}

// Save the file

$directory = "/var/www/vhosts/domain.nl/httpdocs/data/";
$filename = "1day.csv";
$fd = fopen ("$directory" . $filename, "w");
fputs($fd, $output);
fclose($fd);
exit;

我卡住的部分是用计算值添加额外的列。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多