我试图从mysql中获取格式化程序json,但我不知道怎么能得到它。
[{"loc":data1,"0":data2,"title":"data3","1":"data4"},
{"loc":data1,"0":data2,"title":"data3","1":"data4"}]
输出:
[{"loc":[data1,data2], "title":"data3 data4"},
{"loc":[data1,data2], "title":"data3 data4"}]
我想改为:
{{1}}
我的代码应该更改什么?
答案 0 :(得分:2)
尝试此查询,看看它是否为您提供了所需的输出
SELECT
CONCAT('[',
GROUP_CONCAT('
CONCAT('{"loc": [', data1, data2, '], ')
, CONCAT('"title": "', data3, data4 ,'"}')
)
, ']')
FROM database
你也可以做这样的事情
SELECT
CONCAT(data1,data2) AS loc
, CONCAT(data3,data4) as title
FROM database';
然后在PHP中你可以这样做
$feature = array(array('loc'=> $row['loc'],
'title' => $row['title']));
echo json_encode($feature);
答案 1 :(得分:1)
您应该像这样更改$ feature行:
$feature = array('loc' => array($row['data1'], $row['data2']),'title' => $row['data3'].' '.$row['data4']);
对于每一行,这将导致类似于以下的json blob:
{" loc":[" data1"," data2"]," title":" data3 data4&#34 ;}
<强>解释强>
loc:你想要一个数组。所以你要用PHP中的array()来定义它。如果要将值转换为数字,只需在需要时进行类型转换:
array((float)$ row [&#39; data1&#39;],(float)$ row [&#39; data2&#39;])
title:只需将两个字符串连接点和中间的空格即可。
答案 2 :(得分:1)
你的循环不正确应该是:
while($row = mysql_fetch_assoc($dbquery)) {
$feature = array('loc' => array(
$row['data1'],$row['data2']
),
'title' => $row['data3'] .' '.$row['data4']
);
array_push($geojson,$feature);
};