2017-03-27 6 views
0

Ich bin nicht geschickt mit PHP und ich benutze es nur, um Anfragen über eine MySQL-Datenbank Proxy. Ich habe hoch und niedrig dafür gesucht, aber ich kann nicht herausfinden, wie ich mein JSON-Array neste, wie ich es vorhabe.Mysqli zu PHP zu JSON

PHP

if ($result = mysqli_query($con, $sql)) 
{ 

    $resultArray = array(); 
    $tempArray = array(); 

    while ($row = mysqli_fetch_assoc($result)) 
    { 

    array_push($resultArray, $row); 
    }  

    echo json_encode($resultArray); 

} 

In meiner DB habe ich Zuordnungen für 'Blöcke', die miteinander in Verbindung gebracht werden können. PA_250x500_block, PA_250x500_TBlock & PA_250x500_StraightBlock. Alle Blöcke können als Root oder als Zweig bezeichnet werden.

JSON Ausgabe

[ 
    { 
     "root_class_name":"PA_250x500_block", 
     "branch_class_name":"PA_250x500_Tblock" 
    }, 
    { 
     "root_class_name":"PA_250x500_block", 
     "branch_class_name":"PA_250x500_StraightBlock" 
    }, 
    { 
     "root_class_name":"PA_250x500_StraightBlock", 
     "branch_class_name":"PA_250x500_block" 
    }, 
    { 
     "root_class_name":"PA_250x500_StraightBlock", 
     "branch_class_name":"PA_250x500_Tblock" 
    }, 
    { 
     "root_class_name":"PA_250x500_Tblock", 
     "branch_class_name":"PA_250x500_StraightBlock" 
    }, 
    { 
     "root_class_name":"PA_250x500_Tblock", 
     "branch_class_name":"PA_250x500_block" 
    } 
] 

Anstelle dieser Ausgabe, versuche ich es ordentlich als ein Array von kompatiblen Matches verschachtelt zu bekommen, nicht jede mögliche Kombination:

[ 
    { 
     "root_class_name":"PA_250x500_Tblock", 
     "branch_class_name":[ 
     "PA_250x500_StraightBlock", 
     "PA_250x500_block" 
     ] 
    }, 
    { 
     "root_class_name":"PA_250x500_Straightblock", 
     "branch_class_name":[ 
     "PA_250x500_block", 
     "PA_250x500_TBlock" 
     ] 
    }, 
    { 
     "root_class_name":"PA_250x500_block", 
     "branch_class_name":[ 
     "PA_250x500_StraightBlock", 
     "PA_250x500_TBlock" 
     ] 
    } 
] 

Hat jemand irgendwelche Ideen, wie dies in ein verschachteltes Array mit Branch_Class_name als 1 bis N-Liste statt 1 zu 1 Objekte zu machen?

Danke,

+0

Wie sieht Ihre SQL-Abfrage aus? ('$ sql') Wie sehen Datenbankinhalt und Schema aus? – Timo

+0

MySQL gibt verschachtelte Daten nicht zurück. Sie müssen die Daten selbst formatieren – Ibu

Antwort

0

Sieht aus wie Sie Ihr Array Push reparieren müssen,

ändern
array_push($resultArray, $row); 

Um

$resultArray[$row['root_class_name']]['branch_class_name'][] = $row['branch_class_name']; 

Es ist nicht ganz die Ausgabe, weil Ihr Array eine Zahl ist, sondern ein einfach foreach kann dieses Array auf das, was Sie wollen, zurücksetzen.

+0

Oder '$ resultArray = array_values ​​($ resultArray);' um neu zu indizieren. – AbraCadaver

+0

Poster sucht nicht nach "Reindex", Poster sucht nach zusammenpassenden Zeilen. – Forbs

+0

Ich weiß, dass ich auf _ _ aber eine einfache foreach kam, das Array zu dem zurückstellen kann, was Sie wollen. _ – AbraCadaver