簡體   English   中英

將PHP數組轉換為javascript數組,以傳遞到jQuery.flot進行圖表繪制

[英]Turn PHP array into javascript array to pass to jQuery.flot for charting

我一直在逐步構建PHP頁面,因此我可以確認每個部分是否正常工作,等等。我還用JS中的罐頭數據傳遞給jQuery.flot,以創建堆積的條形圖。

基本上,我已經完成了所有工作,但是現在,我很困惑如何將PHP數組輸出為JS數組。 我所做的一切似乎都行不通。

我需要我的js數組顯示為:

var Tim_data1 = [
    [Tim_gd(2014,1,1),13], [Tim_gd(2014,1,2),30], etc., etc.
];

“ Tim_gd”函數將傳遞的值轉換為Unix日期/時間。 該圖表按日期繪制了一段時間內的數據。 因此,js數組的每個元素都是Tim_gd(,,),]。 由於數據量大,每個月都會創建此圖表,依此類推。

概述:

  1. 值是通過mysql select在同一PHP代碼中檢索的,而不是來自Ajax或其他外部來源。
  2. 從select返回的行包含日期(格式為YYYY-MM-DD)和具有該日期的記錄數
  3. 我一次只繪制一個月的圖表。

創建數組的PHP代碼片段:

<?php
    $chartdata = array();
.
.
.
$result2 = mysql_query( $query2 ) or die(mysql_error());  

while ($row2 = mysql_fetch_array($result2)) {
    $event_date = $row2['event_date'];     // date returned as string, YYYY-MM-DD
    $event_count = $row2['event_count'];
    // Build up php array
    $chartdata[$event_date] = $event_count;
}

我已經使用PHP“ foreach”將上述數據輸出到HTML表中,所以我知道我正在獲取值等。應該,並且可以使用PHP substr函數獲取日期的組成部分。提取年,月,日。 創建/輸出javascript的代碼如下:

<script type="text/javascript">
    var TimData1 =[ 
<?php        
    foreach ($chartdata as $k => $v) {
    $yr = substr($k,0,4);
    $day = substr($k,5,2);
    $mon = substr($k,8,2);
 $HTML = <<< eof
    [Tim_gd($yr,$mon,$day),$v],
 eof;
}
?>
];
</script>

使用上面的PHP代碼段,我得到的輸出是:

<script type="text/javascript">
    var TimData1 =[ 
    ];
</script>

沒有數據輸出...。我也嘗試過使用PHP echo也不起作用。 我事先表示歉意,因為我知道這很簡單,但是最近幾天我一直在喝水,試圖一次解決多個問題。 我已經為此困惑了好幾個小時,而且似乎沒有什么更接近的解決方案。

那么,我在做什么錯呢? 而且我知道js數組中的尾部逗號會解決我上面概述的方法。

還是有一種方法可以將JSON數據傳遞到jQuery.flot,這是否會影響傳遞給.plot函數的“選項”? 我似乎找不到與此相關的示例。 並不意味着它不存在-我只是還沒有找到它。

為什么不使用兩種語言都可以處理的JSON格式?

您可以執行以下操作:

<?php 
$chartJSON = json_encode($chartdata);
?>
<script type="text/javascript">
    json = "<?php echo $chartJSON;?>";
    var TimData1 = JSON.parse(json);
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM