Не удается найти правильный синтаксис массива JSON для Highcharts

0

Надеюсь все хорошо. Я столкнулся с небольшими проблемами с настройкой массива 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] и т.д.]

Любые указания относительно того, что я делаю неправильно? Спасибо!

Г.

  • 0
    Преобразуйте ваш JSON в массив в части js.
  • 0
    Какая у вас ошибка ?
Теги:
arrays
highcharts

3 ответа

0
Лучший ответ

У вас есть два пути: сформируйте json для этой формы:

{name:"Crude Oil", y:69}
  • получить JSON, затем использовать цикл и нажать на новый массив данных серии, а затем обратиться к нему в опции highcharts.
  • 0
    Это правильный ответ - только когда я вывел массив следующим образом, он работал для меня: $stack[] = array('name' => $commname, 'y' => $countit);
1

Попробуйте этот jQuery.parseJSON

jQuery.parseJSON()

var stack = <?php echo json_encode( $stack ) ?>;
stack  = jQuery.parseJSON(stack);
  • 0
    Арун, я обнаружил, что когда я перебираю свой массив примерно так, тогда он правильно генерирует график (см. Код ниже). Разве я не могу сделать то же самое с помощью простой линии? var i; for (i = 0; i < stack.length; ++i) { text.series[0].data.push(stack[i]); }
0

Вы должны генерировать исходный массив следующим образом:

$stack[] = array($commname, $countit);

или как это

$stack[] = array('name' => $commname, 'y' => $countit);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню