Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用CSV文件转换D3js多线图_Php_Arrays_D3.js - Fatal编程技术网

Php 使用CSV文件转换D3js多线图

Php 使用CSV文件转换D3js多线图,php,arrays,d3.js,Php,Arrays,D3.js,我正在寻找一个多线图从 我不是使用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

我正在寻找一个多线图从

我不是使用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;
  });
var-tokendata=;
数据=标记数据;
data.forEach(函数(d){
d、 日期=解析时间(d.日期);
d、 close=+d.close;
d、 open=+d.open;
});
我在这里遇到一个问题“data.forEach不是一个函数”

如何修复此问题以使用数据库中的数据


这是一个

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

我假设第一个代码段在不同的服务器上运行,因此
$result
数组不能直接用于javascript代码——这就是您试图将变量设置为编码返回值的原因吗?如果是这样,这不是将数据拉入页面脚本的最佳方式,但这可能适合您:

var data = JSON.parse('<?php echo json_encode($result)?>');
var data=JSON.parse(“”);
甚至:

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

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

您好,感谢您的输入-我得到以下错误:Uncaught SyntaxError:missing)after参数列表。。。。。这里的输出是:var data=JSON.parse(“{”15-Jun-18“:[“8.4”,“0.14559”],“16-Jun-18:[“8.36”,“0.147207”]}”);看起来php输出字符串周围不需要双引号……不幸的是,我现在遇到了一个不同的错误:JSON中的意外标记o位于JSON.parse的位置1。我已经更新了原始帖子,展示了数组是如何构造/输出的,这是更新的关键——现在更容易看到数据了。由于您的输出json对键和字符串值使用双引号,因此我将尝试在
替换周围使用单引号(正如我在更新的示例中所做的那样)。如果数据中有任何单引号,则仍然可能失败——在这种情况下,看起来需要使用
eval(…)
函数。