0

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

我有一个这样的数组:

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

知道如何实现这一目标

4

2 回答 2

4

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

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

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

于 2013-09-18T15:19:36.010 回答
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));

字符串(51) "[["COM":10659.68],["MCD":1219.09],["MCR":77047.65]]"

于 2013-09-18T15:57:27.130 回答