如何从 PHP 脚本中 understand/consume json 输出

How to understand/consume json output from PHP script

使用 PHP PDO 我运行这个查询

SELECT Name, Latitude, Longitude, Begin, End FROM VenueData

并获取数据

$data = $sth->fetchAll();

然后输出

header("Content-type: application/json");
print(json_encode(array('venues'=>$data)));

但是输出很奇怪,

{"venues":[{"Name":"Flintstone1","0":"Flintstone1","Latitude":"57","1":"57","Longitude":"-124","2":"-124","Begin":"8","3":"8","End":"14","4":"14"}]}

select 查询中的每一列似乎都有 2 个键,一个按名称,一个按索引 0-n) 在 json 中。我以前没有遇到过,为什么会这样?

这可能是因为您使用的是 fetch。

检查:PHP Manual PDOStatement::fetchAll

默认情况下,这将使用 PDO::FETCH_BOTH,其中包括结果的数值数组和关联数组。

(获取样式选项可在此处找到:PHP Manual PDOStatement::fetch

根据您的需要,您可以使用:

$data = $sth->fetchAll(PDO::FETCH_ASSOC);

或:

$data = $sth->fetchAll(PDO::FETCH_NUM);

改变这个:

$data = $sth->fetchAll();

由此

$data = $sth->fetchAll(PDO::FETCH_ASSOC);