只返回一个对象JSON,而不是多个对象PHP


Returns only one object JSON instead multiple objects PHP?

首先,请看一下这个JSONhttp://ws.luyencong.net/data/search/query.php?do=json

这是它的代码:

/* --- Execute query and get the data. --- */
$query = $db->query("SELECT t.* FROM ".TABLE_PREFIX."threads t");
while($data = $db->fetch_array($query))
{
    $results[] = array($data['subject'] => $data['subject']);
    $json = json_encode($results, JSON_FORCE_OBJECT);
}
/* --- Print the results to the screen, for future purposes. --- */
echo $json;

但我希望输出的JSON格式如下所示:http://ws.luyencong.net/data/search/json.txt

我们将不胜感激。谢谢你所做的一切。

祝你今天过得愉快!

我相信你只想改变这个:

$results[] = array($data['subject'] => $data['subject']);

对此:

$results[$data['subject']] = $data['subject'];

而且,正如@Orangepill建议的那样,将您的json_encode呼叫移出循环。所以你的整个解决方案看起来是这样的:

/* --- Execute query and get the data. --- */
$query = $db->query("SELECT t.* FROM ".TABLE_PREFIX."threads t");
$results = array();
while($data = $db->fetch_array($query))
{
    $results[$data['subject']] = $data['subject'];
}
/* --- Print the results to the screen, for future purposes. --- */
echo json_encode($results, JSON_FORCE_OBJECT);

您必须将json_encode调用移出循环。

/* --- Execute query and get the data. --- */
$query = $db->query("SELECT t.* FROM ".TABLE_PREFIX."threads t");
while($data = $db->fetch_array($query))
{
    $results[$data['subject']] = $data['subject'];
}
$json = json_encode($results, JSON_FORCE_OBJECT);
/* --- Print the results to the screen, for future purposes. --- */
echo $json;

您正在嵌套您的数组。看起来您只想拥有一个JSON对象,而不是它们的数组。因此,将$result的设置更改为:

$results[$data['subject']] = $data['subject'];

然后,按照建议将json_encode移动到循环之外,在填充数组之后才需要执行此操作。您只是毫无理由地一次又一次地重写变量。