2016-10-19 3 views
1

Das Problem ähnelnd ist die folgende Ergebnismenge zu erhalten:erstellen Json aus einer MySQL-Ergbnisssatzes einen Baum

 'org1', 'unit1', 'proj1' 
     'org1', 'unit1', 'proj2' 
     'org1', 'unit2', 'proj1' 
     'org1', 'unit2', 'proj2'   
     'org2', 'unit1', 'proj1' 
     'org2', 'unit1', 'proj2' 

die folgenden in php:

[{"units": [{"name": "unit1", "projects": ["project1", "project2"]}, {"name": "unit2", "projects": ["project1", "project2"]}], "name": "org1"}, {"units": [{"name": "unit1", "projects": ["project1", "project2"]}], "name": "org2"}] 

Irgendwelche Vorschläge?

+4

Was haben Sie versucht? –

+0

Wenn Sie nicht wissen, wie es geht, ist mein Vorschlag ein Tutorial über den Umgang mit JSON in PHP – sisanared

+0

wer weiß, was sind diese "org1", "unit1", "proj1" – devpro

Antwort

2

Sie können so etwas wie

$final_array = array(); 
foreach($array as $row){ 
    $final_array[$row[0]][$row[1]][] = $row[2]; 
} 

verwenden Nun wird diese „das Array SQL Ergebnis umwandeln in eine multidimentional Array/Baum“ aber nicht gefällt, was Sie noch wollen. So werden wir wieder das Array zu verarbeiten haben ..

$final_array_2 = array(); // Lets go deep 
foreach ($final_array as $name => $units) { 
    $quarterfinal_array = array(); // Not deep enough 
    $semi_final_array = array(); 
    foreach ($units as $proj_name => $projects) { 
     $nano_final_array = array(); // Lets dig deeper ;) 
     $nano_final_array['name'] = $proj_name; 
     $nano_final_array['projects'] = $projects; 
     $semi_final_array[] = $nano_final_array; 
    } 
    $quarterfinal_array['units'] = $semi_final_array; 
    $quarterfinal_array['name'] = $name; 

    $final_array_2[] = $quarterfinal_array; 
} 



echo json_encode($final_array_2); 

PS: Sorry, meine Wahl der Variablennamen sind nicht die idealste, aber sie erhalten die Arbeit erledigt;) Dies ist ein POC ist, kann man immer verbessern darauf.

DEMO