如何将密钥附加到json的开头

时间:2019-04-18 17:50:06

标签: php json

这是我需要的一个例子。我需要在json结果的开头添加results

JSON

{
  "results": [ <-- this is what I need
    {
      "id": 1,
      "text": "Option 1"
    },
    {
      "id": 2,
      "text": "Option 2"
    }
  ]
}

PHP

我正在用php创建我的json结果

$sql = "SELECT * FROM table";   
$result = $GLOBALS['db']->query($sql);
$i = 0;
while ($row = $result->fetch_array()) {
    $response[$i]['id'] = $row['id'];
    $response[$i]['text'] = $row['text'];
    $data['posts'][$i] = $response[$i];
    $i++;
}
if ($result->num_rows == 0) {
    echo '[]';
} else {
    echo json_encode($data['posts']);
}

哪个生产

[
    {
      "id": 1,
      "text": "Option 1"
    },
    {
      "id": 2,
      "text": "Option 2"
    }
]

如何将results键添加到JSON中?

3 个答案:

答案 0 :(得分:3)

只需用额外级别的数组索引(例如结果)包装echo json_encode($data['posts']);行即可。让我们这样做吧-

echo json_encode(['results'=>$data['posts']]);

答案 1 :(得分:0)

使用键json_encode上的键

$result = array('result'=>$data['posts']);
echo json_encode($result);

答案 2 :(得分:0)

您还可以在循环中以这种方式构建数组:

$data['posts']['results'][$i] = $response[$i];

但是要缩短整个过程,只需选择所需的内容即可

$sql = "SELECT `id`, `text` FROM `table`";   
$result = $GLOBALS['db']->query($sql);

while($data['results'][] = $result->fetch_assoc());
echo json_encode($data);