【问题标题】:Highcharts how to use js object in PHP widgetHighcharts 如何在 PHP 小部件中使用 js 对象
【发布时间】:2015-12-07 13:31:18
【问题描述】:

我的问题与此类似:Highcharts how to use JavaScript variable as series data source? - 除了我的是一个 php 变量。

我将 https://github.com/2amigos/yii2-highcharts-widget 这个包与 Yii2 一起使用,我生成了一个如下所示的数据数组:

Array
(
[0] => {y: 37.50, color: "#BF0B23"}
[1] => 49.25
[2] => 52
)

在生成此数组时,我将数字转换为浮点数,但我无法对对象执行此操作。当图表被渲染时,除了我试图改变颜色的那一列之外,所有列都可以正常工作。

JS 最终会像这样"data":[37.5,49.25,"{y: 52.00, color: \"#BF0B23\"}"]。引用的 js 对象基本上意味着它没有被渲染。我试过array_values()(casting) 和其他一些奇怪而奇妙的操作来尝试删除引号。我希望有一种方法可以轻松删除引号?

【问题讨论】:

  • 不应该有:Array(y=> 37.5, color=>"#BF0B23") 吗?当然json_encode()是必须的。

标签: javascript php highcharts


【解决方案1】:

我猜你正在尝试将 PHP 哈希转换为 JSON,然后应该由 highcharts 呈现?

为此尝试 json_encode php 函数 - http://php.net/manual/en/function.json-encode.php

【讨论】:

  • 我之前尝试过 json_encode() 但它最终生成了"data":"\"37.5,49.25,{y: 52.00, color: \\\"#BF0B23\\\"}\""。它需要是 Highcharts API 的数组
  • @Jonnny:所以您的问题是对数据属性进行编码还是绘制图表?你能在 PHP 端构造正确的字符串/数组,然后将其传递给 HighChart 进行图表吗?
  • 是的,数组在 PHP 中是可以的。我以前在 PHP 中做过,但我正在将此代码转换为 Yii2 并使用上面提到的包。我查看了包装,但无法找到其中是否有任何东西改变了数组
【解决方案2】:

好的,我设法弄清楚该怎么做。感谢@paweł-fus,因为您的评论让我以不同的方式思考它。

在我之前的非 yii2、非 2amgios 包中,我将对象生成为字符串并将其直接写入 JS。

    if($d['ATTENDING'] === $data['ATTENDING'])
            {
                $a[] = array($data['ATTENDING'] => '{y: ' . number_format($data['PERCENTAGE'], 2) . ', color: "#BF0B23"}');
            } else {
                $a[] = array($data['ATTENDING'] => number_format($data['PERCENTAGE'], 2));
            }

所以我的数组要么显示列值,要么如果列值是特殊的,它显示值并且我也改变了它的颜色。这被表示为一个 JS 对象。

不过,我需要做的是,在 php 中为 js 对象创建一个内部数组,然后对值进行类型转换,使其不是字符串。:

    $a[] = array($data['ATTENDING'] => ['y' => (float) number_format($data['PERCENTAGE'], 2), 'color' => '#BF0B23']);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2018-08-17
    • 2017-01-04
    • 2020-03-17
    相关资源
    最近更新 更多