我想在地图上显示一些数据。要做到这一点,我必须将它放入这样的JSON文件中(因为谷歌地图):
{
"id": 1,
"picture": "cité.jpg",
"name": "Cité",
"category": "green",
"address": "52 rue de la victoire",
"about": "Cité en 1935",
"location": {
"latitude": "48.8757197",
"longitude": "2.3350033000000394"
},
}
经纬度为" location" 但今天我的PHP代码(
$db = mysqli_connect("localhost", "root", "", "parisdb");
$reponse = $db->query('SELECT * FROM paristable');
while ($donnees = $reponse->fetch_assoc()){
$data[]= $donnees;
}
$encode_donnees = json_encode($data);
echo $encode_donnees;
)告诉我这样的事情:
{"ID":"1","picture":"cit\u00e99.jpg","name":"cit\u00e9",
"about":"cit\u00e9 en 1935","adress":"52 rue de la victoire","category":"green",
"latitude":"48.8757197","longitude":"2.3350033000000394"}
有没有办法在PHP中做到这一点?或者我必须在MYSQL中执行此操作? 提前谢谢你:)
答案 0 :(得分:2)
您可以在while
之后使用此代码 }
$data['location']= [$data['latitude'], $data['longitude']];
unset($data['latitude']);
unset($data['longitude']);
$encode_donnees = json_encode($data);
echo $encode_donnees;
答案 1 :(得分:1)
您可以通过创建一个类似于
的数组来实现此目的$a = [
"id"=> 1,
"picture"=> "cité.jpg",
"name"=> "Cité",
"category"=> "green",
"address"=> "52 rue de la victoire",
"about"=> "Cité en 1935",
"location"=> [
"latitude"=> "48.8757197",
"longitude"=> "2.3350033000000394"
]
];
然后拨打json_encode($a)
答案 2 :(得分:0)
我想谈谈如何在没有太多问题的情况下解决这类问题,而不是如何解决这个特殊情况,其他人比我做得更快,也许更好。
在这种情况下,var_export是您的朋友:
这是一个经常被忽视的函数,它输出变量的字符串表示。换句话说,它会打印您要编写的代码,以创建您作为参数传递的变量。
如果您获得了输出数据的样本,就像您已经拥有的那样,进行导出 一个编码,让php数组将以你需要的格式解码。
如果你写一个像这样的简单脚本
<?php
// lets discover what php array will produce the desired output format
$sample_of_output_format = '{
"id": 1,
"picture": "cité.jpg",
"name": "Cité",
"category": "green",
"address": "52 rue de la victoire",
"about": "Cité en 1935",
"location": {
"latitude": "48.8757197",
"longitude": "2.3350033000000394"
}
}';
var_export(json_decode($sample_of_output_format, true));
?>
然后运行它,你会得到
array (
'id' => 1,
'picture' => 'cité.jpg',
'name' => 'Cité',
'category' => 'green',
'address' => '52 rue de la victoire',
'about' => 'Cité en 1935',
'location' =>
array (
'latitude' => '48.8757197',
'longitude' => '2.3350033000000394',
),
)
此时,您只需复制代码中的输出,用您的数据库字段名称替换样本数据并保留结构。
您将轻松获得类似于以下功能的功能,您可以在代码中使用该功能来解决您的偶然问题。
function encode_for_google_map($dbrow) {
$result = array (
'id' => $dbrow['id'],
'picture' => $dbrow['picture'],
'name' => $dbrow['name'],
'category' => $dbrow['category'],
'address' => $dbrow['address'],
'about' => $dbrow['about'],
'location' =>
array (
'latitude' => $dbrow['latitude'],
'longitude' => $dbrow['longitude'],
),
);
return json_encode($result);
}
并且您的代码变为
$db = mysqli_connect("localhost", "root", "", "parisdb");
$reponse = $db->query('SELECT * FROM paristable');
while ($donnees = $reponse->fetch_assoc()){
$data[]= $donnees;
}
$encode_donnees = array_map(encode_for_google_map, $data);
echo $encode_donnees;
您甚至可以保存您编写的帮助程序脚本作为将来的参考。