0

对于自动完成插件,我需要生成这样的 JSON 结构:

{"tags":[{"tag":"比萨"},{"tag":"罗马"},{"tag":"米兰"},{"tag":"佛罗伦萨"},{"tag" :"纽约"},{"tag":"巴黎"},{"tag":"柏林"},{"tag":"伦敦"},{"tag":"马德里"}]}

我尝试使用以下 PHP 代码:

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

但这只会产生

[{"tag":"比萨"},{"tag":"罗马"},{"tag":"米兰"},{"tag":"佛罗伦萨"},{"tag":"纽约" },{"tag":"巴黎"},{"tag":"柏林"},{"tag":"伦敦"},{"tag":"马德里"}]

所以缺少包装“标签” - 我该如何正确实现?

谢谢!

4

2 回答 2

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

您必须将您的标签数组设置在具有关键“标签”的其他数组中..

于 2013-04-07T10:46:29.580 回答
2
return json_encode(array('tags' => $statement->fetchAll()));

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

于 2013-04-07T10:52:36.647 回答