我有一些数据要显示在地图上。为此,我必须将其放入这样的 JSON 文件中(因为 google map):
{
"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"
},
}
随着经纬度变成“位置” 但是今天我的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 中执行此操作?先感谢您 :)
我想谈谈如何在没有太多麻烦的情况下解决这类问题,而不是关于如何解决这个特殊情况,其他人比我做得更快,也许更好。
在这种情况下,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',
),
)
此时,您只需复制您在代码中获得的输出,用您的 db 字段名称替换示例数据并保留结构。
您将很容易获得一个类似于以下函数的函数,您可以在代码中使用它来解决偶然问题。
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;
您甚至可以保存您编写的帮助程序脚本以供将来参考。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句