Нужна помощь для части с JSON / PHP - PullRequest
0 голосов
/ 11 октября 2011

Мне нужна помощь для генерации части данных серии в json

var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container'
    },
    xAxis: {
        type: 'datetime'
    },
    series: [{
        data: [
            [Date.UTC(2010, 0, 1), 29.9],
            [Date.UTC(2010, 0, 2), 71.5],
            [Date.UTC(2010, 0, 3), 106.4],
            [Date.UTC(2010, 0, 6), 129.2],
            [Date.UTC(2010, 0, 7), 144.0],
            [Date.UTC(2010, 0, 8), 176.0]
         ]
    }]
});

Моя часть php

foreach ($behaviour as $value) {
    $chart['xAxis']['categories'][]= time($value['date']);
}

Выход Json

[1318354710,1318354710,1318354710,1318354710]

Я не знаю, что мне нужно делать с моим php кодом, чтобы выполнить эту часть с действительным json.

часть, где мне нужна помощь

series: [{
    data: [
        [Date.UTC(2010, 0, 1), 29.9],
        [Date.UTC(2010, 0, 2), 71.5],
        [Date.UTC(2010, 0, 3), 106.4],
        [Date.UTC(2010, 0, 6), 129.2],
        [Date.UTC(2010, 0, 7), 144.0],
        [Date.UTC(2010, 0, 8), 176.0]
     ]
}]

Как я могу решить это?

1 Ответ

1 голос
/ 11 октября 2011

Date.UTC возвращает количество миллисекунд в строке даты с полуночи 1 января 1970 года. Это то же самое, что и отметка времени UNIX. Так что [Date.UTC(2010, 0, 1), 29.9] переводится как [1262304000, 29.9].

Есть несколько способов получить эту метку времени в PHP. Один простой (и объектно-ориентированный) способ - использовать класс DateTime:

$time = new DateTime($value['date'], new DateTimezone('UTC'));
$chart['xAxis']['categories'][] = $time->getTimestamp();

Обновление

Не зная тонкостей вашего кода, лучшее, что я могу сделать, это предложить пример кода:

<?php
// sample data
$behaviour = array(
    array(
        'date' => '2010-01-01',
        'datum' => 29.9
    ),
    array(
        'date' => '2010-01-02',
        'datum' => 71.5
    ),
    array(
        'date' => '2010-01-03',
        'datum' => 106.4
    ),
    array(
        'date' => '2010-01-06',
        'datum' => 129.2
    ),
    array(
        'date' => '2010-01-07',
        'datum' => 144
    ),
    array(
        'date' => '2010-01-08',
        'datum' => 176
    )
);

// creates the container information
$output = array(
    'chart' => array(
        'renderTo' => 'container'
    ),

    'xAxis' => array(
        'type' => 'datetime'
    ),

    'series' => array()
);

// adds the sample data
foreach ($behaviour as $value) {
    $time = new DateTime($value['date'], new DateTimezone('UTC'));
    $output['series'][0]['data'][] = array(
        $time->getTimestamp(), $value['datum']
    );
}

// output as JSON
header('Content-type: application/json');
echo json_encode($output); 
?>

Не стесняйтесь адаптировать его к вашему фактическому коду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...