将PHP数组转换为javascript数组以传递给jQuery.flot进行制图

时间:2014-09-30 13:21:20

标签: javascript php jquery arrays

我一直在构建一个PHP页面,所以我可以确认每个部分正常工作,等等。我也在JS中有罐装数据传递给jQuery.flot来创建堆积条形图。< / p>

基本上,我已经完成了所有工作,但是现在,我很难知道如何将PHP数组输出到JS数组中。无论我做什么,根本无法发挥作用。

我需要我的js数组显示为:

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

&#34; Tim_gd&#34;函数将传递的值转换为unix日期/时间。此图表按日期绘制了一段时间内的数据。因此,js数组的每个元素都是Tim_gd(,,),]。由于数据量大,此图表将为每个月等创建

概述:

  1. 通过mysql select在相同的PHP代码中检索值,这不是来自Ajax,或来自其他一些外部源。
  2. 从select中返回的行包含日期(以YYYY-MM-DD的形式),以及具有该日期的记录数
  3. 我一次只画一个月。
  4. 创建数组的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&#34; foreach&#34;将上述数据输出到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,这是否会影响&#34;选项&#34;传递给.plot函数?我似乎无法找到相关的例子。并不意味着它不存在 - 我还没有找到它。

1 个答案:

答案 0 :(得分:0)

为什么不使用由两种语言处理的JSON格式?

你可以这样做:

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