我喜歡我所看到的上面,但實際上拉斷不簡單...嘗試抽象你想要做的兩件事。首先,手編代碼你想要的HTML內容示例看起來像:
<script type="text/javascript">
// this is bad javascript, but relevant to his situation
series: [{
name: 'Tokyo',
data: [7.0,6.9,9.5,14.5,18.2,21.5,25.2,26.5,23.3,18.3,13.9,9.6]
}, {
name: 'New York',
data: [-0.2,0.8,5.7,11.3,17.0,22.0,24.8,24.1,20.1,14.1,8.6,2.5]
}, {
name: 'Berlin',
data: [-0.9,0.6,3.5,8.4,13.5,17.0,18.6,17.9,14.3,9.0,3.9,1.0]
}, {
name: 'London',
data: [3.9,4.2,5.7,8.5,11.9,15.2,17.0,16.6,14.2,10.3,6.6,4.8]
}]
</script>
我要去假設你的數據在一個二維數組。意思是$ row_testresults的形式是$test_results['London']=Array(3.9,4.2,5.7)
下一個假設:你已經獲得了所有在$ row_testresults中整理好的數據。看看這個片斷:
<?
function multiRow ($sql) {
if($sql == "") return FALSE;
//echo "<hr>\$sql=$sql<br><pre>\n"; // \$row:
$Q = mysql_query($sql);
if(isData($Q))
while( $row[]=mysql_fetch_assoc($Q)) {
;//print_r($row);
}
if($row == "")
$rtn_stuff=FALSE;
else
for($i=0; $i<count($row); $i++){
if($row[$i] == "")
unset($row[$i]);
}
/*?>print_r($row): <? print_r($row); ?> </pre> <? */
return $row;
}?>
如果你這樣做$row_testresults=multiRow($TestResults)
或更改爲$產生所有這些數據的實際查詢testresults ......然後我的代碼下面讓生活更簡單:
現在,花一個重複,並把它放在自己的循環位:
<script type="text/javascript">
series:
<?php
$java_data=array();
foreach($row_testresults as $city=>$arr){
$tmpstr = "{\nname: '$city',\n";
$tmpstr.= "data: [".implode(",", $arr)."]\n} ";
$java_data[]=$tmpstr;
}
$java_output="[".implode(", ", $java_data)."]";
echo $java_output;
?>
</script>
混合語言,如這可能是壞的形式,但它的偉大時,你可以把它關閉。即使使用jQuery和Ajax在java中執行所有這些操作,我個人也很難過,所以既然我對PHP非常滿意,我會在動態調用ajax之前執行上述操作。
我還發現使用具有出色語法突出顯示的編輯器至關重要。在Windows中,我使用psPad,在gnome中使用Geany。在KDE去v4之前,我用Kate。
Per @ ThiefMaster,json_encode可能是將數組返回到頁面的最佳方式。如果結果行中的值比日期列中的值多,則需要在PHP中循環設置並使用日期值構建數組。然後json_encode會讓你的JavaScript數組。 – davidethell 2012-03-31 09:28:15
json害怕我...大聲笑我沒有想法它是如何工作的... – 2012-03-31 10:06:38