为highcharts创建一个PHP数组

时间:2017-12-18 14:09:20

标签: php arrays

我正在尝试为高清图创建一个多数组,如您所见HighChart Demo

用于从数据库中检索数据的PHP代码。

    $sql = <<< SQL
             SELECT TOP (
             [miles]
            ,[status]
            FROM [database].[dbo].[portal]
  SQL;

$result = $conn->prepare($sql);
$result->execute();
$rowCount = $result->fetchColumn();

$dataset = array('name' => 'Naam');

while($row = $result->fetch(PDO::FETCH_ASSOC)){

    $data[] = $row['automillage'];
}


array_push($dataset, $data);
echo json_encode($dataset,JSON_NUMERIC_CHECK);

我的数组的当前输出是

       {
        0: [
            1000,
            2297,
            1500,
            3301,
           ],
        name: "Naam"
       }

但我真正想要的是从数据开始而不是从0开始:

           {
        Data: [
            1000,
            2297,
            1500,
            3301,
           ],
        name: "Naam"
       }

我想知道如何在一个阵列中获得两个数据系列。

Tnx到@bassxzero我现在有正确的输出。

但我想再做一件事。将两个数据系列放在一个数组中,如例:

    series: [{
    name: 'Tokyo',
    data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
}, {
    name: 'London',
    data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
}]

当我尝试对两个数组进行json_decode时,编译代码时出错。

- 错误代码为:json_decode()期望参数1为字符串,给定数组

$dataset['Data'] = $data;
$dataset2['Data'] = $data2;
$join[] = json_decode($dataset, true);
$join[] = json_decode($dataset2, true);


echo json_encode($join,JSON_NUMERIC_CHECK);

之后我想用json更新它。我的代码是这样的:

            var chart = new Highcharts.chart('container', {
            chart: {
                type: 'line'
            },
            title: {
                text: 'Monthly Average Temperature'
            },
            subtitle: {
                text: 'Source: WorldClimate.com'
            },
            xAxis: {
                categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
            },
            yAxis: {
                title: {
                    text: 'Temperature (°C)'
                }
            },
            plotOptions: {
                line: {
                    dataLabels: {
                        enabled: true
                    },
                    enableMouseTracking: false
                }
            },
            series: [{
                name: 'Tokyo',
                data: ''
            }, {
                name: 'London',
                data: ''
            }]
        });

        function chartUpdate() {
            $.getJSON("dbcon/connection - Copy.php", function (dataset) {
                chart.update({
                    series: [{
                        data: dataset
                    }]
                });
            });
        } //end chartUpdate 

3 个答案:

答案 0 :(得分:2)

注意: - array_push()创建数字索引,而您需要关联索引。

所以,而不是: -

array_push($dataset, $data);

做的: -

$dataset['Data'] = $data;

在一个数组输出中传递两个数组:

$dataset['data'] = $data;
$dataset2['data'] = $data2;
$join[] = json_decode(json_encode($dataset), true);
$join[] = json_decode(json_encode($dataset2), true);

echo json_encode($join,JSON_NUMERIC_CHECK);

答案 1 :(得分:1)

您应该使用密钥添加数据,而不是仅将其推送到数组。

$dataset['Data'] = $data
编辑:@bassxzero在评论中打败了我。

答案 2 :(得分:1)

首先感谢您的回答。

在正确的输出中获取数组的答案是低于bassxzero:

Change: array_push($dataset, $data); to $dataset['Data']= $data;

在一个数组输出中传递两个数组的答案:

$dataset['data'] = $data;
$dataset2['data'] = $data2;
$join[] = json_decode(json_encode($dataset), true);
$join[] = json_decode(json_encode($dataset2), true);

echo json_encode($join,JSON_NUMERIC_CHECK);