需要以格式将mysql数据打印到json中

时间:2016-04-07 04:27:58

标签: php mysql arrays json pdo

我正在尝试使用php将mysql数据输入到json中,然后在url中访问它。我在json中获取数据,但我需要一种格式。下面是我获取json的PHP代码。

header('Content-Type: application/json');
include('dbhconfig.inc.php');

$response = array();

$stmt = $dbh->prepare("SELECT * FROM venderlist");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
 { 
     $response['results'] = $rows; 
    }
echo json_encode($response);

我的json数据显示为吼叫

{"results":[{"id":"1","vendname":"Genie Events","address":"15, Lower Ground Floor, Lajpat Nagar, Delhi - 110024, Near National Park ","contact":"(91)-11-33437065","contact_o":"(91)-11-40666522","est":"2010","website":"www.genieevents.com","email":"","zip":"110024","latitude":"1.28525","longitude":"103.775464","latlon":"1.28525,103.775464","type":"organisers"},

首先,它没有以适当的结构显示。目前latlon显示为"latlon":"1.28525,103.775464",但我希望结果应为"latlon":[1.28525,103.775464]

如何将[]添加到我的json变量名称latlon。

1 个答案:

答案 0 :(得分:4)

如果当然,您需要首先分解该部分数据,因为它是一个字符串。您需要将它们设置为一个数组单元,其中包含两个浮点值。

获取所有内容后,您需要进行一些操作。

您可以先使用explode对该字符串使用,。这就成了一个数组[]。但它并没有结束,爆炸元素仍然是字符串,因此您可以使用floatval使用arrray_map绘制所有元素。

总而言之,它看起来就像这样:

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as &$r) { // with reference
    // explode with comma, map with floatval
    $r['latlon'] = array_map('floatval', explode(',', $r['latlon']));
}
echo json_encode(array('results' => $rows)); // json encode