Json_encode数组多维

时间:2015-02-25 03:34:27

标签: php arrays json multidimensional-array

我有一个多维数组,它是字符串和int值的组合 像这样

Array ( [0] => Array ( [0] => 2,2 ) [1] => Array ( [0] => 2,59 ) )

我需要让这个数组变得像这样

[['2',   2],['2',       59]]

我使用json_encode但它返回

[["2,2"],["2,59"]]

我将这个数组用于图表

我从http://php.net/manual/en/function.json-encode.php读取,但json_ecode列表中没有人可以像那样返回

有人能帮帮我吗? THX

你可以再次帮助我吗,

    $data = new stdClass(); 
    $data->name = 'SD';
    $data->data = $totalSD;
    $data2 = new stdClass(); 
    $data2->name = 'SMP';
    $data2->data = $totalSMP;
    $list = array();
    array_push($list, $data);
    array_push($list, $data2);

我有这样的数组

$a =[{"name":"SD","data":[0,0,0,0,0,0,0,0,0,0,0,0,0,17,2]},{"name":"SMP","data":[0,‌​0,0,0,0,0,0,0,0,0,0,0,0,0,0]}]; 

我需要将数组更改为此类

$a =[{name:'SD',data:[0,0,0,0,0,0,0,0,0,0,0,0,0,17,2]},{name:'SMP',data:[0,0,0,0,0,‌​0,0,0,0,0,0,0,0,0,0]}];

1 个答案:

答案 0 :(得分:2)

可行,使用foreach()循环并在,分隔符上爆炸字符串。

以下代码使用您在上面提供的确切数组(基于结构):

foreach($array as $key => &$item) {
    foreach($item as $k => $data) {
        $item = explode(',', $data[0]);
    }
}

返回:

[["2","2"],["2","59"]]

Example


如果您需要第一个value作为字符串而第二个作为int,则以下内容应该足够了:

foreach($a as $key => &$item) {
    foreach($item as $k => $data) {
        list($string, $int) = explode(',', $data[0]);
        $item = array(strval($string), (int) $int);
    }
}

它利用strval()将第一个值转换为字符串,并通过PHP中的(int)松散类型将第二个值转换为int。 / EM>

返回:

[["2", 2],["2", 59]]

Example


快速注释

我在foreach中使用了by-reference来修改原始数组。所以基本上,你将获取你的数据,运行foreach循环来根据需要修改它,然后你将对它进行编码。这是该过程将如何进行的一个伪示例:

ARRAY = Get.ARRAY

FOREACH ( ARRAY AS KEY => &VAL) {
    FOREACH (VAL AS KEY => VALUE) {
        LIST(FIRST_ITEM, LAST_ITEM) = EXPLODE(',', VALUE);
        VALUE = ARRAY ( strval(FIRST_ITEM), (int) LAST_ITEM );
    }
}

ECHO json_encode(ARRAY);