Php highcharts上的子系列数组向下展开
我在生成图表时遇到了一些问题,无法在高图中向下搜索。 我正在使用Highcharts渲染带有深入系列的饼图。 我需要转换这个输出jsonPhp highcharts上的子系列数组向下展开,php,arrays,json,highcharts,Php,Arrays,Json,Highcharts,我在生成图表时遇到了一些问题,无法在高图中向下搜索。 我正在使用Highcharts渲染带有深入系列的饼图。 我需要转换这个输出json Drilldownseries = [ { "name": "LAZIO", "data": [["ROMA", 28]], "id": "LAZIO" }, { "name": "LAZIO", "data": [["FROSINONE", 218]],
Drilldownseries = [
{
"name": "LAZIO",
"data": [["ROMA", 28]],
"id": "LAZIO"
},
{
"name": "LAZIO",
"data": [["FROSINONE", 218]],
"id": "LAZIO"
},
{
"name": "LAZIO",
"data": [["LATINA", 212]],
"id": "LAZIO"
},
{
"name": "TOSCANA",
"data": [["FIRENZE", 2]],
"id": "TOSCANA"
},
{
"name": "TOSCANA",
"data": [["LIVORNO", 5]],
"id": "TOSCANA"
},
{
"name": "TOSCANA",
"data": [["PISA", 9]],
"id": "TOSCANA"
}
];
到
这是填充数组的查询部分:
...
if($res3)
{
$i = 0;
while ($row = mysqli_fetch_array($res3, MYSQLI_ASSOC))
{
$row3[$i]["name"] = $row["name"];
$row3[$i]["data"] = [[$row["subname"],$row["data"]]];
$row3[$i]["id"] = $row["id"];
$i++;
};
$row3 = json_encode($row3,JSON_NUMERIC_CHECK);
};
我更喜欢使用格式良好的php来提取数组,但应该与json的格式相同
PHP 7.2Highcharts 6.1.1为了所有人的利益,这是我的解决方案。应感谢改进的代码:) 首先删除下面代码中的方括号
$row3[$i]["data"] = [$row["subname"],$row["data"]];
然后创建新数组,以便
$repl = array();
$i = 0;
foreach ($row3 as $value) {
if (!isset($repl[$i]['id'])) {
$repl[$i]['id'] = $value['id'];
$repl[$i]['name'] = $value['name'];
$repl[$i]['data'] = [$value['data']];
} elseif (($repl[$i]['id']) <>$value['id']) {
$i++;
$repl[$i]['id'] = $value['id'];
$repl[$i]['name'] = $value['name'];
$repl[$i]['data'] = [$value['data']];
} else {
array_push($repl[$i]['data'], $value['data']);
}
}
$resultx = json_encode($repl,JSON_NUMERIC_CHECK);
$repl=array();
$i=0;
foreach(第3行为$value){
如果(!isset($repl[$i]['id']){
$repl[$i]['id']=$value['id'];
$repl[$i]['name']=$value['name'];
$repl[$i]['data']=[$value['data']];
}elseif($repl[$i]['id'])$value['id']){
$i++;
$repl[$i]['id']=$value['id'];
$repl[$i]['name']=$value['name'];
$repl[$i]['data']=[$value['data']];
}否则{
数组推送($repl[$i]['data'],$value['data']);
}
}
$resultx=json\u encode($repl,json\u NUMERIC\u CHECK);
谢谢谢谢@Sphinxxx的格式:)嗨,塞尔吉奥·尼尼,你可以在JS中用简单的方式转换你的JSON:
$repl = array();
$i = 0;
foreach ($row3 as $value) {
if (!isset($repl[$i]['id'])) {
$repl[$i]['id'] = $value['id'];
$repl[$i]['name'] = $value['name'];
$repl[$i]['data'] = [$value['data']];
} elseif (($repl[$i]['id']) <>$value['id']) {
$i++;
$repl[$i]['id'] = $value['id'];
$repl[$i]['name'] = $value['name'];
$repl[$i]['data'] = [$value['data']];
} else {
array_push($repl[$i]['data'], $value['data']);
}
}
$resultx = json_encode($repl,JSON_NUMERIC_CHECK);