json响应中不需要的方括号

时间:2015-10-01 19:01:57

标签: php mysql arrays json

我对提供JSON响应的PHP代码没什么问题。让我举个例子来说清楚。 假设我们在数据库中有以下表格:

      | firstname | lastname | age |
      +===========+==========+=====+
      | Nick      | James    | 21  |
      +-----------+----------+-----+
      | John      | Manson   | 23  |
      +-----------+----------+-----+

在我的PHP代码中,列名存储在数组$ col_fields中。列数存储在变量$ num_fields中。 Array $ row存储数据库表的每一行,因此row [0]是firstname,row [1]是lastname,row [2]是age。我还使用辅助数组$ row_aux来存储对:“key”=> “值”。因此,在我们的示例中,对将是以下内容:

第1行:“firstname”=> “尼克”,“姓氏”=> “詹姆斯”,“年龄”=> “21”

第2行:“firstname”=> “约翰”,“姓氏”=> “曼森”,“年龄”=> “23”

我在等待作为JSON响应的内容如下所述:

{“table_name”:[{“firstname”:“Nick”,“lastname”:“James”,“age”:21},{“firstname”:“John”,“lastname”:“Manson”, “年龄”:23}]}

但我在这里描述的是:

{“table_name”:[{“firstname”: [“Nick”] ,“lastname”: [“James”< strong>] ,“年龄”: [“21”] },{“firstname”: [“John”< strong>] ,“姓氏”: [“Manson”] ,“年龄”: [“23” ] }]}

我使用的代码是:

while ($i < $num_fields) {
  $row_aux[$col_fields[$i]][] = $row[$i];
  $i++;
}
echo json_encode($row_aux);

有谁能告诉我如何解决它?

2 个答案:

答案 0 :(得分:2)

您是否尝试从代码中删除最后一组括号?看起来像创建一个数组,你推动一个单一的值:

while ($i < $num_fields) {
  $row_aux[$col_fields[$i]] = $row[$i];
  $i++;
}
echo json_encode($row_aux);

答案 1 :(得分:0)

  $row_aux[$col_fields[$i]][] = $row[$i];
                           ^^---append to array

由于$i每次递增,因此您在每次迭代时都会创建一个全新的单项数组。如果那只是持有一个值,那就撕掉[]

  $row_aux[$col_fields[$i]] = $row[$i];
                           ^---just assign the value, no extra array