JavaScript — ChartJS видит дату в строке в виде чисел

Я пытаюсь получить некоторые строки из 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, все мое приложение перестает работать ..

Надеюсь, кто-нибудь может мне помочь!

0

Решение

Проблема с вашим кодом в том, что echo будет просто выводить содержимое переменной, но когда вы анализируете его значение в массиве javascript, вам нужно заключить его в кавычки. Так что если вы измените

for ($i = 0; $i < count($data); $i++) {
echo $data[$i] . ",";
}

в

for ($i = 0; $i < count($data); $i++) {
echo "'" . $data[$i] . "',";
}

он должен работать. Это также решит вашу другую проблему. Таким образом, с этим изменением вы также сможете использовать время.

1

Другие решения

Других решений пока нет …