我有这个数组:
$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
分隔并创建具有正确格式的新数组?
答案 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);