使用json_encode进行Google图表显示

时间:2015-12-27 18:01:30

标签: javascript php arrays json echo

我正在尝试将数据从PHP数组导入JS google线图...一旦我弄清楚如何echo结果,我就能完成它。结果看起来像这样:

data.addRows([
        [new Date(2014, 0),  -.5,  5.7],
        [new Date(2014, 1),   .4,  8.7],
        [new Date(2014, 2),   .5,   12],
        [new Date(2014, 3),  2.9, 15.3],
        [new Date(2014, 4),  6.3, 18.6],
        [new Date(2014, 5),    9, 20.9],
        [new Date(2014, 6), 10.6, 19.8],
        [new Date(2014, 7), 10.3, 16.6],
        [new Date(2014, 8),  7.4, 13.3],
        [new Date(2014, 9),  4.4,  9.9],
        [new Date(2014, 10), 1.1,  6.6],
        [new Date(2014, 11), -.2,  4.5]
      ]);

我目前正在使用JSON_ENCODE这样的数组:

$data = array("[new Date(2014, 0),  -.5,  5.7],', '[new Date(2014, 1),   .4,  8.7],");
    json_encode($data);

我最终可以用来从我的数据库中提取数据,我试图回应这样的结果:

 data.addRows([
        <?
         echo str_replace('"', '', json_encode($data));
        ?>
    ]);

问题是,什么都没有用?有谁知道我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

您应输出时间戳,可能以毫秒为单位,因为Javascript支持

<?php
    $data = array(
        array(
            mktime(0, 0, 0, 1, 1, 2014) * 1000,
            -0.5,  
            5.7
        ),
        array(
            mktime(0, 0, 0, 2, 1, 2014) * 1000,
            0.4,  
            8.7
        )
    );
?>

现在你可以回应它,它会神奇地变成一个由数组组成的javascript数组

data.addRows(<? echo json_encode($data); ?>);

大多数插件都会接受时间戳,如果由于某些原因你拥有来拥有日期对象,你可以这样做

var result = <? echo json_encode($data); ?>;

result.forEach(function(arr) {
    arr[0] = new Date(arr[0]);
});

data.addRows(result);

答案 1 :(得分:1)

首先,在您当前的代码中,JSON_ENCODE绝对没有用,但在整个字符串中添加了额外的括号。其次,你在字符串中间的符号上有一些奇怪的东西。另外,我不知道你为什么要把这个句子放在一个数组中。 现在,假设你做了一个错字和数组看起来像:

$data = array("[new Date(2014, 0),  -.5,  5.7]", "[new Date(2014, 1),   .4,  8.7]");

简单地循环它会更容易

foreach($data as $value){
    echo $value.",";
}