Надеюсь все хорошо. Я столкнулся с небольшими проблемами с настройкой массива JSON через PHP и нажатием его в Highcharts.
На данный момент я генерирую массив следующим образом:
$stack[] = array($commname => $countit);
$stack = json_encode($stack);
Когда я печатаю_r массив, я получаю следующее:
[{"Сырая нефть": 69}, {"Природный газ": 554}, {"Жидкий природный газ": 152}, {"Мощность": 40}, {"Уголь": 10}, {"Погода": 21}, { "Макроэкономика": 67}, { "Разное": 45}, { "Цены": 50}, { "Грузовые": 14}, { "Прогнозы": 16}]
Затем я передаю массив в javascript следующим образом:
var stack = <?php echo json_encode( $stack ) ?>;
.. и затем передать его в следующий массив высоких диаграмм, как это:
var text = {
chart: {
plotBackgroundColor: null,
plotBorderWidth: 1,//null,
plotShadow: false
},
title: {
text: 'Browser market shares at a specific website, 2014'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: {
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
}
}
},
series: [{
type: 'pie',
name: 'Browser share',
data: [
]
}]
};
text.series[0].data.push(stack);
... Но это не работает. Я думаю, что мой массив "стек" не подготовлен должным образом, потому что высокие диаграммы хотят, чтобы он был в таком формате: [["Сырая нефть", 35], ["Природный газ", 45] и т.д.]
Любые указания относительно того, что я делаю неправильно? Спасибо!
Г.
У вас есть два пути: сформируйте json для этой формы:
{name:"Crude Oil", y:69}
$stack[] = array('name' => $commname, 'y' => $countit);
Попробуйте этот jQuery.parseJSON
jQuery.parseJSON()
var stack = <?php echo json_encode( $stack ) ?>;
stack = jQuery.parseJSON(stack);
var i; for (i = 0; i < stack.length; ++i) { text.series[0].data.push(stack[i]);
}
Вы должны генерировать исходный массив следующим образом:
$stack[] = array($commname, $countit);
или как это
$stack[] = array('name' => $commname, 'y' => $countit);