D3js Multi Line график конвертировать с использованием файла CSV

Я хочу сделать многострочный график из этот пример.

Вместо того, чтобы использовать данные из файла 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 не является функцией» …

Как я могу это исправить, чтобы использовать данные из базы данных?

Здесь скрипка

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() Метод выглядит так, поэтому, если вы все еще не можете заставить его работать, обновите ваше сообщение с примером возвращенной строки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector