使用json_encode进行Google图形显示

Using json_encode for Google graph display

本文关键字:Google 图形 显示 进行 encode json 使用      更新时间:2023-09-26

我正试图将数据从PHP数组导入JS谷歌折线图。。。一旦我能弄清楚如何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));
        ?>
    ]);

问题是,什么都不起作用?有人知道我在这里做错了什么吗?

您应该输出时间戳,可能以毫秒为单位,因为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);

首先,在您当前的代码中,JSON_ENCODE除了在整个字符串中添加额外的括号之外,什么都没有做。第二,字符串中间有一些奇怪的符号。另外,我不明白你为什么要把那个句子放在一个数组里。现在,假设你犯了一个拼写错误,数组看起来像:

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

对你来说,简单地循环通过会容易得多

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