PHP encode JSON (2 dimensional array)
PHP's json_encode()
uses a certain amount of magic to determine whether a given vector is encoded as a JSON object or an array, but the simple rule is this: If the array has contiguous, zero-indexed, numeric keys, it will be encoded as an array. Any other vector (object or associative array) will be encoded as an object.
Because you are using odbc_fetch_array()
, your result rows are returned as an associative array with the keys being the column names. To get the result you want you have 3 options:
Pass the result rows through array_values()
:
$json[] = array_values($row);
Manually construct the individual arrays:
$json[] = array($row['message_type'], $row['percentage']);
Or probably the best option is to use odbc_fetch_row()
instead, which will return indexed arrays straight away:
while ($row = odbc_fetch_row($rs)) {
$json[] = $row;
}
Comments
-
meda almost 2 years
I am querying a table that return to fields(message_type & percentage). I use PHP to encode the json data, here is how i do it
$json = array(); while ($row = odbc_fetch_array($rs)) { $json[][] = $row; } echo json_encode($json);
output :
[ [ { "message_type" : "bullying", "percentage" : "60" } ], [ { "message_type" : "cheating", "percentage" : " 14" } ], [ { "message_type" : "Stress", "percentage" : "16" } ], [ { "message_type" : "Gang", "percentage" : "7" } ] ]
As you can see json_encode function is adding curly braces, quotes and the object key name.
What I want is to parse the json as two dimensional array only, here is the desired output:
[ ["bullying", 60], ["harrassment", 9], ["cheating", 14], ["Stress", 16], ["Gang", 7] ]
I also tried to encode it manually but I could not get the result I need.