我的问题类似于这个:Highcharts how to use JavaScript variable as series data source? - 除了我的是一个php变量。
我在Yii2上使用https://github.com/2amigos/yii2-highcharts-widget这个包,我生成了一个如下所示的数据数组:
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)
以及其他一些奇怪而精彩的操作来尝试删除引号。我希望有办法轻松删除引号?
答案 0 :(得分:1)
我猜你试图将PHP哈希转换为JSON,然后应该由highcharts呈现?
尝试使用json_encode php函数 - http://php.net/manual/en/function.json-encode.php
答案 1 :(得分:0)
好的,我设法弄清楚该怎么做。谢谢@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']);