json编码返回为对象而不是数组

I have already read this question and doesn't answer my issue.

I have an Array like this:

Array
(
    [0] => Array
        (
            [COM] => 10659.68
        )

    [1] => Array
        (
            [MCD] => 1219.09
        )

    [2] => Array
        (
            [MCR] => 77047.65
        )

)

And when I make a json_encode() it return this;

[{"COM":10659.68},{"MCD":1219.09},{"MCR":77047.65}]

What I need is get the data in this way:

[["COM":10659.68],["MCD":1219.09],["MCR":77047.65]]

Any idea how can I achieve this

Even though that's not a valid JSON, you can replace the { with [

echo str_replace(array('{','}'),array('[',']'),json_encode($your_array)); 

Depending on the content you might need a more complex replacement with regular expressions.

More complex solution:

function toJson($arr){
    $return = array();
    foreach($arr as $k => $v){
        if(is_array($v)) $return[] = toJson($v);
        else $return[] = sprintf('"%s":%s', $k, $v);
    }
    return sprintf('[%s]', implode(',', $return));
}

Test:

$input = array(
    array('COM' => '10659.68'),
    array('MCD' => '1219.09'),
    array('MCR' => '77047.65'), 
);
var_dump(toJson($input));

string(51) "[["COM":10659.68],["MCD":1219.09],["MCR":77047.65]]"