获取.json文件的正确格式

时间:2018-03-17 17:18:23

标签: php mysql json

我正在从highcharts实施图表。显示它所需的数据需要采用.json格式。

它有以下方案:

[
[
    1167609600000,
    21
]
]

我通过php脚本从mysql数据库获取数据:

<?php

    //OPEN CONNECTION TO DB
    $connection = mysqli_connect('localhost','abc','def','ghi') or die("Error " . mysqli_error($connection));

    //SELECT ROWS NEEDED
    $sql = "SELECT test, temp FROM database";
    $result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));

    //CONVERT MYSQL TO PHP ARR
    $json_array= array();
    while ($row= mysqli_fetch_assoc($result))
        {
            $json_array[]= $row;
        }

     //WRITE DATA TO FILE
     $fp = fopen('temps.json', 'w');
     fwrite($fp, json_encode($json_array, JSON_PRETTY_PRINT));
     fclose($fp);

    //DISCONNECT FROM DB
    mysqli_close($connection); 
?>

现在出现了我的问题。我的脚本生成的数据如下所示:

[
  {
    "a": "2",
    "price": "15"
  }
]

首先,我不知道如何在我的sql查询中压制每个结果的列名。其次,我不明白为什么我的脚本创建花括号而不是方括号。第三,它为什么使用“。”为每一个价值。

有人能帮帮我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您将数组推入一个关联数组,因此密钥将保留并显示在您的JSON中:

while ($row = mysqli_fetch_assoc($result))
{
    $json_array[] = [ (int)$row['a'], (int)$row['price'] ];
}

输出:

[
  [
    2,
    15
  ]
]

另一种方法是使用array_values()

while ($row = mysqli_fetch_assoc($result))
{
    $vals = array_values($row);
    $vals = array_map('intval', $vals);
    $json_array[] = $vals;
}