我正在查询返回字段(message_type和百分比)的表。我使用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] ]
我也尝试手动对其进行编码,但无法获得所需的结果。
PHP json_encode()使用一定数量的魔术来确定给定的矢量是编码为JSON对象还是数组,但是简单的规则是:如果数组具有连续的,零索引的数字键,则它将被编码为数组。任何其他向量(对象或关联数组)将被编码为对象。
json_encode()
因为您使用odbc_fetch_array(),所以结果行将作为关联数组返回,且键为列名。要获得结果,您需要3个选项:
odbc_fetch_array()
将结果行通过array_values():
array_values()
$json[] = array_values($row);
手动构造单个数组:
$json[] = array($row['message_type'], $row['percentage']);
也许最好的选择是改为使用odbc_fetch_row()它,它会立即返回索引数组:
odbc_fetch_row()
while ($row = odbc_fetch_row($rs)) { $json[] = $row; }