表中的多行数据进入JSON数组

时间:2018-08-21 10:05:59

标签: php mysql json

我已经花了整整24个小时了。

我不是编码员,也不假装自己,只是有一个问题我无法解决,我想请您帮忙:)

我有一个充满纬度和经度位置的数据库列。我想创建一个名为points.json的文件,该文件与以下格式匹配:

{
  "points": [
    [LAT, LONG],
    [LAT, LONG],
    [LAT, LONG],
    [LAT, LONG],
    [LAT, LONG]
  ]
}

其中LAT和LONG是数据库中的记录(52.93839800000001,-1.1425212999999999)

我当前的代码从数据库中获取所有位置,并在屏幕上每行输出纬度/经度:

$sql = "SELECT latlong from requests";
$result = $con->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo $row['latlong'] . "<br>";
    }
} else {
    echo "0 results";
}
$con->close();

表结构:

|id|user|       latlong          |
----------------------------------
|1|user|52.93839801,-1.1425212999|

我只是无法解决将其转换成上述格式。我尝试了多种不同的json_encode方法,但最终每一行都有单独的JSON数组吗?

最终,我想即时生成一种以上格式的文件,其中包含保存在数据库列/行中的位置引用。

谢谢。

3 个答案:

答案 0 :(得分:2)

尝试分解您的latlong并将值推入数组。

$sql = "SELECT latlong from requests";
$result = $con->query($sql);

$points = array();

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
       $points[] = explode(',', $row['latlong']);

    }
} 

$con->close();

echo json_encode(array('points' => $points));

答案 1 :(得分:0)

如果您使用的是MySQL的较新版本,请尝试以下操作:

SELECT JSON_OBJECT(
        'points', JSON_ARRAYAGG(
            JSON_ARRAY(LAT, LONG)
        )
FROM yourTable;

如果这样做没有帮助,请共享您的表结构和数据库版本。 如果您想自己尝试,请查看https://facebook.github.io/react-native/docs/running-on-device

答案 2 :(得分:0)

您可以使用以下代码:

$sql = "SELECT latlong from requests";
$result = $con->query($sql);


$points = array();
$i=0;
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $latlong = explode(",", $row['latlong']);

        $points['points'][$i] = $latlong;
        $i++;
    }
}

print_r((json_encode($points)));