我试图从csv文件中获取一些字符串,放在chartjs的图形下。
我写了这个php函数:
function getTitle($id) {
$stations = fopen("stations.csv", 'r');
//$csv_data = fopen(date("G") . '.csv', 'r');
$csv_data = fopen('16.csv', 'r'); //fopen("/mnt/weather-data/" .
date("Y/m/d/G") . ".csv", 'r');
$data = array();
$DAY_LENGTH = 60 * 60;
$currentDate = date('U');
while (($line = fgetcsv($csv_data)) !== FALSE) {
$date = date('U', strtotime($line[1]));
if ($date >= ($currentDate-$DAY_LENGTH) && $line[2] == $id) {
array_push($data, $line[0]);
}
}
for ($i = 0; $i < count($data); $i++) {
echo $data[$i] . ",";
}
fclose($stations);
fclose($csv_data);
}
工作正常,我称之为函数,它会打印necesarry字符串,这是一个日期,所以2018-02-08就是这样。
当我尝试在ChartJS中需要它们的标签部分中调用此函数时。它将此日期作为总和返回,因此2018-02-08将像2008年一样返回。
labels: [<?php getTitle(($_GET['id']))?>],
我做错了什么?
当我尝试将$ line [0]更改为$ line [1]时的另一个问题,这是一个具有以下格式的时间:20:17:36,我的整个应用程序停止工作..
希望有人可以帮助我!!
答案 0 :(得分:1)
你的代码的问题是echo只会输出变量的内容,但是当你将它的值解析为javascript数组时,你需要用引号括住你的值。所以如果你改变了
for ($i = 0; $i < count($data); $i++) {
echo $data[$i] . ",";
}
到
for ($i = 0; $i < count($data); $i++) {
echo "'" . $data[$i] . "',";
}
它应该有用。这也将解决您的其他问题。因此,通过此更改,您还应该能够使用时间。