我正在查询返回字段的表(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]
]
我也尝试手动编码,但我无法得到我需要的结果。
答案 0 :(得分:6)
PHP的json_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;
}