我希望从this example制作多线图。
我不是使用CSV文件中的数据,而是从数据库中构建值数组:
$token_prices = sw::shared()->prices->getForTokenID($token_id);
$token_prices_array = array();
foreach ($token_prices as $token_price) {
$token_prices_array[] = [
"date" => $token_price['date'],
"close" => $token_price['close']
];
}
$second_token_prices = sw::shared()->prices->getForTokenID(3);
$second_token_prices_array = array();
foreach ($second_token_prices as $second_token_price) {
$second_token_prices_array[] = [
"date" => $second_token_price['date'],
"close" => $second_token_price['close']
];
}
$all = array_merge($second_token_prices_array, $token_prices_array);
foreach ($all as $datapoint) {
$result[$datapoint['date']] []= $datapoint['close'];
}
数据输出:
{"15-Jun-18":["8.4","0.14559"],"16-Jun-18":["8.36","0.147207"],"17-Jun-18":["8.42","0.13422"],"18-Jun-18":["8.71","0.146177"],"19-Jun-18":["8.62","0.138188"],"20-Jun-18":["8.45","0.128201"],
我的问题是从数据库中插入数据:
var tokendata = <?php echo json_encode($result) ?>;
data = tokendata;
data.forEach(function(d) {
d.date = parseTime(d.date);
d.close = +d.close;
d.open = +d.open;
});
我在这里遇到一个问题“ data.forEach不是函数” ...
如何解决此问题以使用数据库中的数据?
这里是Fiddle
答案 0 :(得分:0)
看来您正在将查询php页面的结果作为JSON字符串嵌入-如果要将该数据作为数组进行迭代,则必须首先将其解析回Javascript对象。
我假设第一个代码段在另一台服务器上运行,因此$result
数组不能直接用于您的javascript代码-这就是为什么您尝试将变量设置为编码的返回值?如果是这样,这不是将数据提取到页面脚本中的最佳方法,但这可能对您有用:
var data = JSON.parse('<?php echo json_encode($result)?>');
甚至:
var data = eval(<?php echo json_encode($result)?>);
这两个方法均假定您的结果以有效的json字符串形式返回,因为没有错误检查或try / catch逻辑。老实说,我不知道json_encode()
方法的输出是什么样子,因此,如果仍然无法正常工作,请使用返回的字符串示例更新您的帖子。