2013-02-18 17 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