javascript — передача данных JSON из массива PHP в ChartJS.

Итак, у меня есть массив PHP, созданный из данных, извлеченных из расширенных пользовательских полей в WordPress:

<?php
$chartArray = array();
forEach($cat_meta as $key => $value) {
$chartArray[] = array($value['star_rating']);
}
echo json_encode($chartArray);
?>

Это выводит следующее на странице:

[[ «2»], [ «4»], [ «1»], [ «3»], [ «5»]]

Я пытаюсь получить этот результат в переменную data файла ChartJS:

var radarChartData = {
labels: ["Price", "Speed", "Format", "Size", "User Experience"],
datasets: [
{
label: "My First dataset",
fillColor: "rgba(220,220,220,0.2)",
strokeColor: "rgba(224,07,19,1)",
pointColor: "rgba(224,07,19,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(224,07,19,1)",
data: [5, 4, 5, 5, 1, 3] // data needs to replace this
}
]
};

var ctx = document.getElementById('RadarChart').getContext('2d');
var myRadarChart = new Chart(ctx).Radar(radarChartData);

Я немного похож на PHP / Javascript n00b, поэтому я надеюсь, что кто-то сможет пролить свет на это для меня. Или, может быть, есть лучший способ сделать это? Заранее спасибо.

0

Решение

Сохраните объект / данные JS из массива в виде строки в PHP и распечатайте их.

<?php

// start script
$str = '<script>';
// start chart
$str .= 'var radarChartData = {';
// make labels
$str .= 'labels: [';
$delimiter = '';
foreach($chartArray as $key => $val){
$str .= $delimiter.'"'.$key.'"';
$delimiter = ', ';
}
// make dataset
$str .= '], datasets: [{';
$str .= 'label: "My First dataset", ';
$str .= 'fillColor: "rgba(220,220,220,0.2)", ';
$str .= 'strokeColor: "rgba(224,07,19,1)", ';
$str .= 'pointColor: "rgba(224,07,19,1)", ';
$str .= 'pointStrokeColor: "#fff", ';
$str .= 'pointHighlightFill: "#fff", ';
$str .= 'pointHighlightStroke: "rgba(224,07,19,1)",';
$str .= 'data: [';
$delimiter = '';
foreach($chartArray as $key => $val){
$str .= $delimiter.$val;
$delimiter = ', ';
}
$str .= ']}]};';
// end script
$str .= "</script>";
// print
print $str;

?>

<canvas id='RadarChart' class='chart' width='400px' height='400px'></canvas>

<script>
var ctx = document.getElementById('RadarChart').getContext('2d');
var polar_big5 = new Chart(ctx).Radar(radarChartData);
</script>
2

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

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

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