微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP编码JSON(二维数组)

我正在查询返回字段的表(message_type& percentage).
我使用PHP来编码json数据,这是我的工作方式

$json = array();
while ($row = odbc_fetch_array($rs)) {
  $json[][] = $row;
}
echo json_encode($json);

输出

[ [ { "message_type" : "bullying",
      "percentage" : "60"
    } ],
  [ { "message_type" : "cheating",
      "percentage" : " 14"
    } ],
  [ { "message_type" : "Stress",
      "percentage" : "16"
    } ],
  [ { "message_type" : "Gang",
      "percentage" : "7"
    } ]
]

如您所见,json_encode函数正在添加花括号,引号和对象键名.

我想要的是只将json解析为二维数组,这是所需的输出

[
  ["bullying", 60],
  ["harrassment", 9],
  ["cheating", 14],
  ["Stress", 16],
  ["Gang", 7]
]

我也尝试手动编码,但我无法得到我需要的结果.

解决方法:

PHPjson_encode()使用一定量的魔法来确定给定的向量是被编码为JSON对象还是数组,但是简单的规则是:如果数组具有连续的,零索引的数字键,它将被编码作为一个数组.任何其他矢量(对象或关联数组)将被编码为对象.

因为您使用的是odbc_fetch_array(),所以结果行将作为关联数组返回,其中键是列名.要获得您想要的结果,您有3个选择:

将结果行传递到array_values()

$json[] = array_values($row);

手动构造单个数组:

$json[] = array($row['message_type'], $row['percentage']);

或者最好的选择是使用odbc_fetch_row(),它将立即返回索引数组:

while ($row = odbc_fetch_row($rs)) {
    $json[] = $row;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐