Сделать массив JSON Flot совместимым - PullRequest
1 голос
/ 09 февраля 2011

У меня есть некоторый PHP-код, который выводит массив JSON при вызове $ .getJSON:

.
.
.
$data = array_combine($date_dispatched,$amount);

echo json_encode($data);

Это собирается:

$.getJSON('statistics_get.php',function(output) {
            $.plot($("#graph_1"), [{
                        data: output,
                        lines: {show:true}
                        }]
                    );
});

Теперь, используя firebug, ответЯ получаю обратно в форме:

{"0":"0","1296658458000":"566","1296725534000":"789","1297072385000":"890","1297072388000":"435"}

Флот не обрабатывает эти данные.Я считаю, что Flot нужно, чтобы он был в форме [[1,2], [4,5], [6,9]] и т. Д. Поэтому мой вопрос: каков наилучший способ получить это?JSON массив в правильной форме для flot для чтения и создания графика.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2011

Если вы посмотрите на пример два здесь: http://php.net/manual/en/function.json-encode.php, вы увидите, что json_encode может возвращать массив вместо ассоциативного объекта. Разве это не решение, а не

var flotArr = []
var cnt=0;
for (var o in data) flotArr[cnt++]=[o,data[o]]
1 голос
/ 09 февраля 2011

Не используйте array_combine, так как он не делает то, что вам нужно. Делать «zip» в PHP немного неприятно, но вы должны уметь справляться с:

function make_pair($date, $amount) {
    return array($date, $amount);
}

$data = array_map('make_pair', $date_dispatched, $amount);

А затем JSON-кодировать это.

...