2013-02-18 53 views
0

我想让我的数据数组采用Highcharts用来生成数据的多系列图表的格式。多系列Highchart数据与多维数组

我的数据数组是:

Array ( 
[answer1] => Array ([SubQuestion 1] => 3 [SubQuestion 2] => 1) 
[answer2] => Array ([SubQuestion 1] => 2 [SubQuestion 2] => 2) 
[answer3] => Array ([SubQuestion 1] => 1 [SubQuestion 2] => 1) 
[answer4] => Array ([SubQuestion 1] => 1 [SubQuestion 2] => 2) 
[answer5] => Array ([SubQuestion 1] => 0 [SubQuestion 2] => 1) 
) 

我需要得到它进入这个格式Highcharts:

$chartdata = array(
array("name" =>"SubQuestion 1","data"=> array(3,2,1,1,0)), 
array("name" =>"SubQuestion 2","data"=> array(1,2,1,2,1)) 
); 

任何人都可以请点我在正确的方向为如何通过迭代我数组来创建一个HighCharts格式的新数组?

感谢您的帮助。我只想关闭循环并发布正确答案的稍微修改版本: $ chartdata = array(); ($ series为$ key1 => $ value1){ $ i = 0; ($ value1 as $ key2 => $ value2){ $ chartdata [$ i] ['name'] = $ key2; $ chartdata [$ i] ['data'] [] = $ value2; $ i ++; }}

+0

为什么不使用的foreach只是创建它,然后创建所需的阵列? – 2013-02-18 16:20:10

+0

我会看'array_walk()'来修改初始数组。但是将初始数组转换为期望的输出并不明显,因此您可能需要使用'foreach'并创建一个新的转换数组。 – Minras 2013-02-18 16:30:30

回答

1
$myarray = Array ( 
'answer1' => Array ('SubQuestion 1'=> 3 , 'SubQuestion 2' => 1) , 
'answer2'=> Array ('SubQuestion 1' => 2, 'SubQuestion 2' => 2) , 
'answer3' => Array ('SubQuestion 1' => 1, 'SubQuestion 2' => 1) , 
'answer4' => Array ('SubQuestion 1' => 1, 'SubQuestion 2' => 2) , 
'answer5' => Array ('SubQuestion 1' => 0, 'SubQuestion 2' => 1) 
); 


$temp = array(); 
$chartdata = array(); 
foreach($myarray as $key1 => $value1){ 
    foreach($value1 as $key2 => $value2){ 
    if(!in_array($key2, $temp)){ 
    $temp[] = $key2; 
    } 
    $chartdata[array_search($key2, $temp)]['name'] = $key2; 
    $chartdata[array_search($key2, $temp)]['data'][] = $value2; 
    } 
} 
echo '<pre>'; 
print_r($chartdata); 
+0

这非常接近我所需要的。数组([SubQuestion 1] => Array([name] => SubQuestion 1 [data] => Array([0] => 3 [1] => 2 [2] => 1 [3] => 1) [数组] =>数组2 [数据] =>数组([0] => 1 [1] => 2 [2] => 1 [3] => 2 [4] => 1)) ) 但是还有一个'钥匙'。该数据应该是一个数值数组而不是一个关联数组 – jvegas 2013-02-18 16:42:49

+0

我更新了几位现在它正是你想要的:) – 2013-02-18 16:56:57