【发布时间】:2016-07-19 18:35:54
【问题描述】:
我可能在 PHP 中生成正确的 JSON 输出时遇到了一个简单的问题。我使用以下代码从 mysql 数据库中收集相关数据。
<?php
header('Content-Type: application/json');
$mysqli = new mysqli("localhost", "root", "", "civitas");
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
exit();
}
$events = array();
if ($result = $mysqli->query("SELECT title_hu FROM `events`")) {
while ($row = $result->fetch_assoc()) {
$events[] = $row;
}
echo json_encode($events, JSON_PRETTY_PRINT);
}
$result->close();
$mysqli->close();
代码生成以下输出:
[
{
"title_hu": "Zr\u00ednyi napok s",
"created_at": "2015-08-31 16:26:23"
},
{
"title_hu": "Persona Non Grata 25. sz\u00fclet\u00e9snapi koncert",
"created_at": "2015-08-31 18:12:25"
},
{
"title_hu": "Bek\u00f6lt\u00f6z\u0151s buli",
"created_at": "2015-08-31 18:22:29"
},
{
"title_hu": "as",
"created_at": "2015-08-31 18:29:13"
},
{
"title_hu": "dddd",
"created_at": "2015-08-31 18:29:58"
}
]
但是对于我使用的工具,格式应该是这样的:
{
"events":[{
"title_hu":"Teszt hír",
"content":" lorembalblalba ",
"created_at":"2015-08-31 18:29:58"
},
{
"title_hu":"Teszt hír2",
"content":" lorembalblalba ",
"created_at":"2015-08-31 18:29:58"
},
{
"title_hu":"Teszt hír3",
"content":" lorembalblalba ",
"created_at":"2015-08-31 18:29:58"
}
]
}
我尝试将结果放入另一个数组,但在这种情况下,JSON 输出仅返回数据集的第一项。
我做错了什么?
【问题讨论】:
-
你能不能在循环中使用
$events['events'][] = $row;,不要忘记在循环之前将$events['events']声明为数组。 -
所以这个
json_encode(array('events'=>$events), JSON_PRETTY_PRINT);不适合你?