2014-02-11 2 views
0

Я играл с диаграммой google для своего проекта, и почему-то я все еще не могу вычислить многомерный массив (из базы данных).Многомерный для google chart

print_r() Выход:

Array 
    (
[0] => Array 
    (
     [year] => 2000 
     [value] => 2766 
     [typeName] => Oil 
    ) 

[1] => Array 
    (
     [year] => 2000 
     [value] => 3098 
     [typeName] => Gas 
    ) 

[2] => Array 
    (
     [year] => 2000 
     [value] => 269814 
     [typeName] => Coal 
    ) 

[3] => Array 
    (
     [year] => 1999 
     [value] => 2836 
     [typeName] => Oil 
    ) 

[4] => Array 
    (
     [year] => 1999 
     [value] => 3150 
     [typeName] => Gas 
    ) 

[5] => Array 
    (
     [year] => 1999 
     [value] => 257561 
     [typeName] => Coal 
    ) 
); 

в google chart требуемый формат данных, я хочу, чтобы это было что-то вроде этого:

 ['Year' , 'Oil', 'Gas', 'Coal'] 

    ["2000", 2766, 3098, 269814], 
    ["1999" 2836, 3150, 257561] 

Может кто-то помочь мне, как играть с многомерным? Спасибо!


ответ

2

Вы shuld преобразовать эти данные в формате JSON. Просто проанализируйте таким образом, чтобы получить желаемую структуру O (n)

$headers = array("year" => 0, "oil" => 1, "gas" => 2, "coal" => 3); 
$response[] = array_map("ucfirst",array_keys($headers)); 
foreach($orig_array as $k => $item) { 
    $temp_data[$item['year']][0] = (string) $item['year']; 
    $temp_data[$item['year']][$headers[$item['typeName']]] = $item['value']; 
    if(4==count($temp_data[$item['year']])) $response[] = $temp_data[$item['year']]; 
}  

$json_data = json_encode($response); 
echo($json_data); 
+0

gracias !, именно то, что им нужно. – 1mr3yn

+0

пока, я буду играть с этим классным алгоритмом, так как $ headers являются динамическими, это очень помогает мне, – 1mr3yn

+0

Hi mr. cardeol, у меня есть следующий вопрос: что если один из $ orig_array имеет только 3 ключа? например, год: 2000 только имеет «нефть и газ», но нет «угля» ?, можно ли это сделать с помощью array_fill? – 1mr3yn