用于纠正json格式的PHP数组

时间:2014-03-19 12:45:21

标签: php arrays json highcharts

我有这个数组:

$users = Array
(
[Gareth] => Array
    (
        [25732] => 180
        [25689] => 2310
        [25760] => 
        [25759] => 
        [25758] => 
        [25728] => 
        [25734] => 
    )
[Adam] => Array
    (
        [25732] => 
        [25689] => 
        [25760] => 
        [25759] => 
        [25758] => 420
        [25728] => 60
        [25734] => 
    )
[Cennydd ] => Array
    (
        [25732] => 
        [25689] => 
        [25760] => 
        [25759] => 
        [25758] => 
        [25728] => 
        [25734] => 1035
    )
)

它拥有工作ID和用户在几分钟内花在这项工作上的持续时间。

我需要使用highcharts输出此数据,因此它需要采用Json格式。

目前,使用json_encode,它会返回:

{ "Gareth":
  {
    "25732":180,"25689":2310,"25760":null,"25759":null,"25758":null,"25728":null,"25734":null
  },
  "Adam Jukes":
  {
    "25732":null,"25689":null,"25760":null,"25759":null,"25758":420,"25728":60,"25734":null
  },
  "Cennydd":
  {
    "25732":null,"25689":null,"25760":null,"25759":null,"25758":null,"25728":null,"25734":1035
  }
}

但我需要这种格式:

[{
    "name": 'Gareth ',
    "data": [180, 2310,null, null, null,null, null]
    },
    {   "name": 'Adam',
    "data": [null, null, null,null,420, 60, null]
    },{
    "name": 'Cennydd',
    "data":[null, null , null, null, null,null, 1035 ]
    }]
}]

但我似乎无法弄明白。 我是否需要使用foreach分隔并创建具有正确格式的新数组?

3 个答案:

答案 0 :(得分:2)

获得所需内容的最佳方式是修改检索$users数组的方式,但如果不能,则可以按照以下方式重新格式化以满足您的需求:

$new_users = array();

foreach ($users as $user => $data) {
    $new_users[] = array(
        'name' => $user,
        'data' => array_values($data)
    );
}

echo json_encode($new_users);

答案 1 :(得分:1)

您可以迭代数组并使用array_values来获取所需的格式:

$fixed=array();
foreach ($users as $k => $v) {
    $fixed[]=array('name'=>$k, 'data'=>array_values($v));
}

echo json_encode($fixed);

答案 2 :(得分:0)

首先,您需要在将数据编码为JSON后格式化。

$result = array();
foreach($users as $k => $v) {
       $result[] = array(
         'name' => $k,
         'data' => $v
       );
}

最后

echo json_encode($result);