Я пытаюсь получить некоторые строки из 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);
}
который работает нормально, везде, где я вызываю эту функцию, она печатает необходимые строки, которые являются датой, например, 2018-02-08.
Когда я пытаюсь вызвать эту функцию в части метки, где они мне нужны в ChartJS. он возвращает эту дату в виде суммы, поэтому, как 2018-02-08 вернется как 2008.
labels: [<?php getTitle(($_GET['id']))?>],
Что это я не так делаю?
Другая проблема, когда я пытаюсь изменить $ line [0] на $ line [1], это время со следующим форматом: 20:17:36, все мое приложение перестает работать ..
Надеюсь, кто-нибудь может мне помочь!
Проблема с вашим кодом в том, что echo будет просто выводить содержимое переменной, но когда вы анализируете его значение в массиве javascript, вам нужно заключить его в кавычки. Так что если вы измените
for ($i = 0; $i < count($data); $i++) {
echo $data[$i] . ",";
}
в
for ($i = 0; $i < count($data); $i++) {
echo "'" . $data[$i] . "',";
}
он должен работать. Это также решит вашу другую проблему. Таким образом, с этим изменением вы также сможете использовать время.
Других решений пока нет …