如何在PHP中实现该JSON结构

时间:2013-04-07 10:45:12

标签: php json pdo

对于autocomplete-plugin,我需要生成一个类似的JSON结构:

  

{ “标签”:[{ “标记”: “比萨”},{ “标记”: “罗马”},{ “标记”: “米兰”},{ “标记”: “佛罗伦萨”},{ “tag”:“New York”},{“tag”:“Paris”},{“tag”:“Berlin”},{“tag”:“London”},{“tag”:“Madrid”}] }

我尝试使用以下PHP代码:

$tags = array();
while (($row = $statement -> fetch(PDO::FETCH_ASSOC)) !== false) {
    $tags[] = array('tag' => $row['text']);
}
echo json_encode($tags);

但仅生成

  

[{ “标记”: “比萨”},{ “标记”: “罗马”},{ “标记”: “米兰”},{ “标记”: “佛罗伦萨”},{ “标记”:”纽约“},{”tag“:”Paris“},{”tag“:”Berlin“},{”tag“:”London“},{”tag“:”Madrid“}]

所以包装“标签”丢失了 - 我该如何正确实现?

谢谢!

2 个答案:

答案 0 :(得分:3)

$tags = array();
while (($row = $statement -> fetch(PDO::FETCH_ASSOC)) !== false) {
    $tags[] = array('tag' => $row['text']);
}
echo json_encode(array('tags'=> $tags));

您必须使用键'tags'设置其他数组中的tags数组。

答案 1 :(得分:2)

return json_encode(array('tags' => $statement->fetchAll()));

(当然,您需要在查询中select text as tag。并将PDO::FETCH_ASSOC设置为默认提取选项,以使您的代码有意义且干净)