我喜欢我在上面看到的内容,但实际上实现它并不容易……尝试抽象出你正在尝试做的两件事。首先,手动编写一个您希望 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 中整理了一些很好的数据。看看这个 sn-p:
<?
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。