我正在尝试将数据从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));
?>
]);
问题是,什么都没有用?有谁知道我在这里做错了什么?
答案 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.",";
}