猿问

如何转换mysql查询的数组结果以在chartist.js中使用

我有一个疑问


$array1 = $wpdb->get_results( "SELECT timestamp,temp FROM $table_name ORDER BY id desc LIMIT 8", ARRAY_A );

$data1 = json_encode($array1);

echo $data1;

结果回响如下:


[

  {"timestamp":"2020-07-26 09:50:25","temp":"26.31"},

  {"timestamp":"2020-07-26 09:40:29","temp":"26.37"},

  {"timestamp":"2020-07-26 09:30:33","temp":"26.31"},

  {"timestamp":"2020-07-26 09:20:37","temp":"26.43"},

  {"timestamp":"2020-07-26 09:19:56","temp":null},

  {"timestamp":"2020-07-26 08:54:54","temp":"26.37"},

  {"timestamp":"2020-07-26 08:44:58","temp":"26.18"},

  {"timestamp":"2020-07-26 08:35:02","temp":"26.25"}

]

我想用它作为图表的输入。


Chartist.js(也包括moments.js)给出的模板如下所示:


var chart = new Chartist.Line('.ct-chart', {  series: [    {

  name: 'series-1',

  data: [

    {x: new Date(143134652600), y: 53},

    {x: new Date(143234652600), y: 40},

    {x: new Date(143340052600), y: 45},

    {x: new Date(143366652600), y: 40},

    {x: new Date(143410652600), y: 20},

    {x: new Date(143508652600), y: 32},

    {x: new Date(143569652600), y: 18},

    {x: new Date(143579652600), y: 11}

  ]

},

等等。如何在 php 中转换此数组/用 x 替换时间戳/用 y 替换时间戳并在 javascript 中使用它(在循环中?)?


白板的微信
浏览 108回答 1
1回答

斯蒂芬大帝

在 SQL 中,使用 UNIX_TIMESTAMP 获取正确格式的日期,并将列别名为 x 和 y。$array1 = $wpdb->get_results( "SELECT UNIX_TIMESTAMP(timestamp) as x,temp as y FROM $table_name ORDER BY id desc LIMIT 8", ARRAY_A );$data1 = json_encode($array1);正如您所做的那样,对数据进行 JSON 编码。根据您将 JSON 接收到 JavaScript 中的方式,循环遍历数组并将时间戳转换为日期,将值转换为浮点数。以下假设 PHP 已回显到 JavaScript 中var data = JSON.parse('<?php echo $data1; ?>');data.forEach(function(row){&nbsp; row.x = new Date(parseInt(row.x));&nbsp; row.y = parseFloat(row.y);});然后使用图表中的数据var chart = new Chartist.Line('.ct-chart', {&nbsp; series: [&nbsp; &nbsp; {&nbsp; &nbsp; name: 'series-1',&nbsp; &nbsp; data: data&nbsp; },如果您通过 AJAX 从 PHP 获取 JSON 字符串,则只需传入结果字符串并以相同的方式解析它即可。
随时随地看视频慕课网APP
我要回答