json — php на highchart, как отправить правильный массив?

Я сделал этот код с:

https://github.com/influxdata/influxdb-php

https://www.highcharts.com/docs/working-with-data/live-data

<?php
include('/opt/lampp/htdocs/example/vendor/autoload.php');

$host = '127.0.0.1';
$port = 8086;
$dbname = 'aTimeSeries';

/*
$client = new \InfluxDB\Client($host, $port);

$database = $client->selectDB('aTimeSeries');
*/

//the exact same thing
$database = \InfluxDB\Client::fromDSN(sprintf('influxdb://user:pass@%s:%s/%s', $host, $port, $dbname));

//query of the last value
$result = $database->query('select * from valeurs group by * order by desc limit 1');

//recup le point
$points = $result->getPoints();

// Set the JSON header
header("Content-type: application/json");

// The x value is the current JavaScript time, which is the Unix time multiplied by 1000.
$x = time() * 1000;
// The y value is a random number
//$y = rand(0,100);
$y = $points;

// Create a PHP array and echo it as JSON
$ret = array($x, $y);
echo json_encode($ret);

?>

Выход:

[1523603506000,[{"time":"2018-04-13T07:11:45.208943754Z","value":48}]]

Но я бы хотел это:

[1523603506000,48]

Или это:

[2018-04-13T07:11:45.208943754Z,48]

Если я попытаюсь вывести $points только я получил только последнюю часть массива, но это не то, что мне бы хотелось.

PS: если у вас есть лучшее решение, чтобы сделать то же самое, может быть, с nodeJS, я обязательно выслушаю

0

Решение

Спасибо за вашу помощь,
У меня была другая проблема, но я решил ее.

Но все еще есть 2 часа задержки, но теперь он отображается прямо в старших чартах.

<?php
include('/opt/lampp/htdocs/example/vendor/autoload.php');

$host = '127.0.0.1';
$port = 8086;
$dbname = 'aTimeSeries';

//directly get the database object
$database = \InfluxDB\Client::fromDSN(sprintf('influxdb://user:pass@%s:%s/%s', $host, $port, $dbname));

//query of the last value
$result = $database->query('select * from valeurs group by * order by desc limit 1');

//get the point
$points = $result->getPoints();

//make the array right
$points = json_encode($points);
$points = json_decode($points);

//take only the seconds of the time
$points[0]->time = substr($points[0]->time, 0,20);

// Set the JSON header
header("Content-type: text/json");

// The x value is the current JavaScript time, which is the Unix time multiplied by 1000 and take the time
$x = strtotime($points[0]->time) * 1000;

// The y value take the value which is a random value
$y = $points[0]->value;

// Create a PHP array and echo it as JSON
$ret = array($x, $y);
echo json_encode($ret);

?>
0

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

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

По вопросам рекламы [email protected]