【发布时间】:2016-01-28 09:58:27
【问题描述】:
我正在使用highcharts来显示一些数据库信息,所以当我使用一个系列时我没有任何问题,但是当我想在我的图表上添加几个系列时,这有点困难。
首先是我的 PHP 脚本:
foreach ($informationslier as $keyFille => $fille) {
$grafData = array();
foreach ($fille['information'] as $keyInfos => $information) {
$mois = $information['created']->format('m');
$mois = $mois - 1;
$timestamp = strtotime($information['created']->format('j').'-'.$mois.'-'.$information['created']->format('Y'));
//Multiply by 1000 to get seconds in js
$timestamp = $timestamp * 1000;
$grafData[$keyInfos] = array($timestamp, (float)$information['valeur']);
//$grafData[$keyInfos] = implode(', ', $grafData[$keyInfos]);
//$grafData[] = "[Date.UTC(".$information['created']->format('Y').','.$mois.','.$information['created']->format('j')."),".$information['valeur']."]";
}
$tabInformationsData[$keyFille]['name'] = 'Evolution '.$fille['titre'];
$tabInformationsData[$keyFille]['color'] = '#FFA020';
//$tabInformationsData['infos'][$keyFille]['data'] = array();
//$implodeGraf = implode(',', $grafData);
$tabInformationsData[$keyFille]['data'] = $grafData;
}
php 脚本返回给我这样的东西:
Array
(
[0] => Array
(
[name] => Evolution pourcentage
[color] => #FFA020
[data] => Array
(
[0] => Array
(
[0] => 1451084400000
[1] => 17.00
)
[1] => Array
(
[0] => 1451170800000
[1] => 19.00
)
[2] => Array
(
[0] => 1451257200000
[1] => 14.00
)
[3] => Array
(
[0] => 1451343600000
[1] => 6.00
)
)
)
)
我将此数组发送到我的视图,然后我这样做:
series: {{ graphique | json_encode() | raw }},
但是在 HTML 中,渲染看起来像这样并且不起作用:
series: [{
"name":"Evolution pourcentage",
"color":"#FFA020",
"data":[[1451084400000,"17.00"],[1451170800000,"19.00"],[1451257200000,"14.00"],[1451343600000,"6.00"]]
}],
我不知道为什么它不起作用...我尝试将时间戳乘以 1000,但没有任何效果。 那么,如何显示我的所有系列?
已编辑
通过将所有日期传递给时间戳并在所有值之前添加 (float) 来工作...我使用响应编辑了我的帖子。
谢谢
【问题讨论】:
-
解析 json 数组。参考:stackoverflow.com/questions/18064226/…
-
嘿,谢谢,但我找到了解决方案:
{{ graphique | json_encode() | raw }},我的每个数据数组中的两个引号仍然存在问题,我更新了我的帖子。 -
删除引号是不够的。您正在尝试使用
Date.UTC()这是 JavaScript 函数,所以它总是会被 PHP 作为字符串返回。相反,您应该在 PHP 中计算时间戳,因此返回的将是数字。那么应该有:[0] => [1453852800000, 20.00]、[1] => [1453939200000, 30.00]...等 -
在 PHP 中,您可以使用返回 unix 时间戳的 strtotime 函数。请注意,您需要将所有 unix 时间图乘以 1000 才能具有 javascript 格式。
-
我尝试使用时间戳并将它们乘以 1000 作为 javascript,系列数组看起来不错,但我的图表上没有出现任何内容...我再次编辑了我的第一篇文章。
标签: php arrays json symfony highcharts