【问题标题】:Highcharts add several series with PHP arrayHighcharts 用 PHP 数组添加了几个系列
【发布时间】: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


【解决方案1】:

也许

  • 迭代您的 {{ my_array }} twig 变量
  • 您的 JSON 仅使用 unicode 字符:JSON specification

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多