PHP encode JSON (2 dimensional array)
arrays, json, php
Solution
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;
}
Problem
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.