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

时间:2013-09-18 15:14:46

标签: php arrays json

我已经阅读了此question并且没有回答我的问题。

我有一个像这样的数组:

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

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

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

)

当我制作一个json_encode()时,它会返回;

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

我需要的是以这种方式获取数据:

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

我知道如何实现这个目标

2 个答案:

答案 0 :(得分:4)

即使这不是有效的JSON,您也可以将{替换为[

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

根据内容的不同,您可能需要使用正则表达式进行更复杂的替换。

答案 1 :(得分:1)

更复杂的解决方案:

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));
}

测试:

$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]]”