【问题标题】:Json_encode Array MultidimensionalJson_encode 数组多维
【发布时间】:2015-04-26 22:52:33
【问题描述】:

我有一个多维数组,它是字符串和 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 列表中没有人可以这样返回

有人可以帮助我吗?谢谢

你能再帮我一次吗,

    $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]}];

【问题讨论】:

  • 所以你只想用逗号来分解innerArrays?
  • 类似的东西,但结果将是 [string,int]
  • 我在输入数组的数据中看不到任何整数。请添加您输入数据的 var_export

标签: php arrays json multidimensional-array


【解决方案1】:

这是可行的,使用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。

返回:

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

Example


快速笔记

我在 foreach 中使用了引用来修改原始数组。因此,基本上,您将获取数据,运行 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);

【讨论】:

  • 我想要的结果是 [['2', 2],['2', 59]]]
  • 你能再帮我一次吗,我有这样的数组 $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]}];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 2022-10-06
  • 2012-06-02
相关资源
最近更新 更多