【问题标题】:D3js Multi line graph convert from using CSV fileD3js 多线图从使用 CSV 文件转换
【发布时间】:2018-07-02 16:02:17
【问题描述】:

我希望从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

【问题讨论】:

    标签: php arrays d3.js


    【解决方案1】:

    您似乎将查询 php 页面的结果嵌入为 JSON 字符串——如果您想将该数据作为数组进行迭代,您必须先将其解析回 Javascript 对象。

    我假设第一个代码 sn-p 在不同的服务器上运行,因此 $result 数组不能直接用于您的 javascript 代码 - 这就是您尝试将变量设置为编码返回值?如果是这样,这不是将数据提取到页面脚本中的最佳方式,但这可能对您有用:

    var data = JSON.parse('<?php echo json_encode($result)?>');
    

    甚至:

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

    这两种方法都假定您的结果作为有效的 json 字符串返回,因为没有错误检查或 try/catch 逻辑。老实说,我不知道json_encode() 方法的输出是什么样的,所以如果您仍然无法使其正常工作,请使用返回的字符串示例更新您的帖子。

    【讨论】:

    • 您好,感谢您的输入 - 我收到此错误:参数列表后未捕获 SyntaxError: missing ..... 输出:var data = JSON.parse("{"15-Jun-18 ":["8.4","0.14559"],"16-Jun-18":["8.36","0.147207"]}");
    • 看起来你不需要 php 输出字符串周围的双引号......
    • 不幸的是,我现在得到一个不同的错误:JSON.parse 中位置 1 处的 JSON 中的意外标记 o。我已经更新了原始帖子以显示数组的结构/输出方式
    • 感谢您的更新——现在更容易查看数据。由于您的输出 json 对键和字符串值使用双引号,因此我会尝试在 &lt;?php ...?&gt; 替换周围使用单引号(正如我在更新的示例中所做的那样)。如果数据中有任何单引号,这可能仍然会失败——在这种情况下,您似乎需要使用 eval(...) 函数。
    猜你喜欢
    • 2014-05-09
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    相关资源
    最近更新 更多