【问题标题】:Cannot find proper JSON array syntax for Highcharts找不到适用于 Highcharts 的正确 JSON 数组语法
【发布时间】:2014-12-09 10:12:35
【问题描述】:

希望一切都好。我在通过 PHP 设置 JSON 数组并将其推送到 Highcharts 时遇到了一些麻烦。

目前我生成这样的数组:

    $stack[] = array($commname => $countit);
    $stack = json_encode($stack);

当我 print_r 数组时,我得到以下信息:

[{"原油":69},{"天然气":554},{"液化天然气 Gas":152},{"Power":40},{"Coal":10},{"Weather":21},{"Macroeconomics":67},{"Miscellaneous":45},{"Prices" :50},{"Freight":14},{"Forecasts":16}]

然后我将数组传递给 javascript,如下所示:

var stack = <?php echo json_encode( $stack ) ?>;

.. 然后像这样将它传递到下面的 highcharts 数组中:

var text = {
        chart: {
            plotBackgroundColor: null,
            plotBorderWidth: 1,//null,
            plotShadow: false
        },
        title: {
            text: 'Browser market shares at a specific website, 2014'
        },
        tooltip: {
            pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    format: '<b>{point.name}</b>: {point.percentage:.1f} %',
                    style: {
                        color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
            data: [
                ]
            }]
        };
text.series[0].data.push(stack);

...但这不起作用。我认为我的数组“堆栈”准备不正确,因为 highcharts 希望它采用以下格式:[["Crude oil", 35],["Natural Gas", 45] etc...]

关于我做错了什么的任何指针?谢谢!

G.

【问题讨论】:

  • 在js部分将你的JSON转换成数组。
  • 你得到什么错误?

标签: javascript php arrays json highcharts


【解决方案1】:

试试这个 jQuery.parseJSON

jQuery.parseJSON()

var stack = <?php echo json_encode( $stack ) ?>;
stack  = jQuery.parseJSON(stack);

【讨论】:

  • Arun,我发现当我像这样循环遍历我的数组时,它会正确生成图形(参见下面的代码)。我不能只用一条简单的线做同样的事情吗? var i; for (i = 0; i &lt; stack.length; ++i) { text.series[0].data.push(stack[i]); }
【解决方案2】:

你有两种方法 - 将 json 格式转换为这种格式:

{name:"Crude Oil", y:69}
  • 获取 JSON,然后使用循环并推送到新的系列数据数组,然后在 highcharts 选项中引用它。

【讨论】:

  • 这是正确的答案 - 只有当我按如下方式输出数组时它才对我有用:$stack[] = array('name' =&gt; $commname, 'y' =&gt; $countit);
【解决方案3】:

你应该像这样生成源数组:

$stack[] = array($commname, $countit);

或者像这样

$stack[] = array('name' =&gt; $commname, 'y' =&gt; $countit);

【讨论】:

    猜你喜欢
    • 2019-06-03
    • 1970-01-01
    • 2020-02-21
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2013-01-06
    相关资源
    最近更新 更多