2015-12-07 50 views
0

我的問題與此類似:Highcharts how to use JavaScript variable as series data source? - 除了mine是一個php變量。Highcharts如何在PHP小部件中使用js對象

我使用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)和其他一些奇怪而奇妙的操作來嘗試刪除引號。我希望有一種方法可以輕鬆刪除引號?

+2

不應該有:'陣列(y => 37.5,color =>「#BF0B23」)'?當然''json_encode()'是必要的。 –

回答

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']); 
1

我想你試圖將PHP哈希轉換爲JSON,然後應該由highcharts渲染?

對於那些嘗試json_encode PHP函數 - http://php.net/manual/en/function.json-encode.php

+0

我以前試過json_encode(),但它最終生成''data「:」\「37.5,49.25,{y:52.00,color:\\」#BF0B23 \\\「} \」「'。它需要是Highcharts API的數組 – Jonnny

+0

@Jonnny:所以你的問題是編碼數據屬性或繪製它?你能在PHP端構造正確的字符串/數組,然後將它傳遞給HighChart進行製圖嗎? –

+0

是的,數組在PHP中是好的。我之前在PHP中完成了它,但是我將這些代碼轉換爲Yii2並使用上面提到的包。我查看過這個軟件包,但無法找到那裏的任何內容是否改變了這個數組 – Jonnny