首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP JSON将输出数字编码为字符串

问PHP JSON将输出数字编码为字符串
EN

Stack Overflow用户
提问于 2012-07-10 10:56:22
回答 4查看 9.1K关注 0票数 7

我正在尝试使用PHP和MySQL输出一个JSON字符串,但是纬度和经度输出为一个值括有引号的字符串。当我尝试将标记添加到google地图时,这会导致一个问题。

下面是我的代码:

代码语言:javascript
复制
$sql = mysql_query('SELECT * FROM markers WHERE address !=""');
$results = array();
while($row = mysql_fetch_array($sql))
{
   $results[] = array(
      'latitude' =>$row['lat'],
      'longitude' => $row['lng'],
      'address' => $row['address'],
      'project_ID' => $row['project_ID'],
      'marker_id' => $row['marker_id']
   );
}
$json = json_encode($results);

echo "{\"markers\":";
echo $json;
echo "}";

以下是预期的输出:

代码语言:javascript
复制
{"markers":[{"latitude":0.000000,"longitude":0.000000,"address":"2234 2nd Ave, Seattle, WA","project_ID":"7","marker_id":"21"}]}

下面是我得到的输出:

代码语言:javascript
复制
{"markers":[{"latitude":"0.000000","longitude":"0.000000","address":"2234 2nd Ave, Seattle, WA","project_ID":"7","marker_id":"21"}]}

请注意纬度和经度值两边的引号。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-10 11:01:43

您也可以尝试

代码语言:javascript
复制
echo json_encode( $results, JSON_NUMERIC_CHECK );

一些参考:

PHP JSON constants

票数 17
EN

Stack Overflow用户

发布于 2012-07-10 11:03:24

代码语言:javascript
复制
$results[] = array(
  'latitude' => (float)$row['lat'],
  'longitude' => (float)$row['lng'],
  'address' => $row['address'],
  'project_ID' => $row['project_ID'],
  'marker_id' => $row['marker_id']
);

纬度和经度应该是一个浮点数,但您可以尝试这样做

票数 2
EN

Stack Overflow用户

发布于 2012-07-10 11:06:13

您可能不知道:在PHP语言中从MySQL中检索数据时,无论实际值是什么,您都将always get字符串返回。然而,对float进行简单的类型转换应该可以解决这个问题:

代码语言:javascript
复制
$sql = mysql_query('SELECT * FROM markers WHERE address !=""');
$results = array();
while($row = mysql_fetch_array($sql))
{
   $results[] = array(
      'latitude' => (float) $row['lat'],
      'longitude' => (float) $row['lng'],
      'address' => $row['address'],
      'project_ID' => $row['project_ID'],
      'marker_id' => $row['marker_id']
   );
}
$json = json_encode($results);

echo "{\"markers\":";
echo $json;
echo "}";

或者,由于浮点数可能不足以存储经纬度坐标,请将它们存储为字符串,并使用字符串操作函数(如str_replace )动态删除引号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11405997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档