2012-12-20 69 views
7

我在我的應用程序中實現了Highcharts。它需要特定格式的數據。將數組數據轉換爲預期的javascript格式

在我的表中數據爲如下格式如下

enter image description here

JavaScript的需求數據

enter image description here

當我var_dumpx_axis陣列和y_axis陣列,我得到以下結果

enter image description here

我應該使用哪些php函數來格式化數組元素並傳遞給該格式的JavaScript?

data:[ 
    [<? echo PHP_some_function(" ' ", x_axis) ?>, <? echo (y_axis) ?>] //quotes for x, no quotes for y value 
] //Moreover it should run for all the values in x_axis and y_axis 

我需要在這裏一些邏輯..

我最後的圖形看起來就像

enter image description here

+0

你可能不希望使用這些變量。你可能要提取您的數據更完整的記錄集,包含X_AXIS每個記錄,Y_AXIS,並可能si_no,通過Y_AXIS降序排列。那麼它應該是相對簡單的 –

+0

另一方面,這是我最近看到的一個很好的問題! – Pateman

+0

這看起來很像功課。即使這些值是相同的。 http://stackoverflow.com/questions/13954081/highcharts-pie-chart-x-axies-values-are-not-displayed-while-trying-to-get-data-f – wergeld

回答

2

問題是您的查詢。

應該像下面這樣。

SELECT x_axis, y_axis FROM yourTableName; 

這樣你會得到完全格式Highcharts需求。你只需要將它插入到一個數組中。

1

[<? echo "'". json_encode($x_axis). "', " . json_encode($y_axis) ?>] 

演示:http://codepad.org/G5JAtXWu

尼克斯,我很困惑。

你想要做的是這樣的:

foreach($x_axis as $key=>$x) { 
    echo "['" . $x . "', " . $y_axis[$key] . "]"; 
} 

演示:http://codepad.org/SKNk1VaX

爲了總結這一切:

$d = array(); 
foreach($x_axis as $key=>$x) { 
    $d[] = "['" . $x . "', " . $y_axis[$key] . "]"; 
} 
echo json_encode($d); 

演示:http://codepad.org/KhofwXCi

+0

這並沒有考慮到排序這是要求。 –

+0

@ScottSauyet我看不到。 – Neal

+0

查看圖表配置中請求的數據的順序。明顯降序的價值。不過,我不知道這是否真的很重要。 –

1

假設:

$x_axis = array('Safari', 'Opera', 'Firefox', 'IE', 'Chrome', 'Others'); 
$y_axis = array(10, 6, 40.5, 20, 10.6, 0.5); 

這應該工作:

$data = array(); 
$length = count($x_axis); 
for ($i = 0; $i < $length; $i++) { 
    $data[] = array($x_axis[i], $y_axis[i]); 
} 
+0

這沒有考慮到所請求的種類。 –

+0

@ScottSauyet:OP沒有請求的數據進行排序,我也不會感到驚訝,如果是圖形的庫了該 – Cerbrus

+0

的護理,但看需要的數據格式,它有一個排序的順序數據,其中一個不不符合輸入順序。 –

0

大概陣列相結合,比JSON編碼和更換?以防萬一的多樣性;)

<?php 

$x_axis = array(
'Safari', 'Opera', 'fireFox' 
); 

$y_axis = array(
10, 30.4, 50 
); 

$keyFilled = array_combine($x_axis, $y_axis); 

arsort($keyFilled); 

$jsonData = json_encode($keyFilled); 

$jsonDataReplaced = str_replace(array(',', '{', '}', ':'), array('],[', '[', ']', ','), $jsonData); 
echo '<pre>'; 
var_dump('['.$jsonDataReplaced.']'); 

?> 

輸出爲:

string(45) "[["fireFox",50],["Opera",30.4],["Safari",10]]" 

http://phpfiddle.org/main/code/jq4-cgb

+0

這沒有考慮到所要求的排序。 –

+0

@ScottSauyet,不太確定它是否被請求,但很容易修復,更新 – dmi3y

相關問題