sql >> Databasteknik >  >> RDS >> Mysql

Skapar array inuti array från mysql-data till json

Du måste mappa om din array och sedan initiera en array för rättighetsnyckeln... så ändra din while-loop ungefär så här:

$json_response = array();
while($row = $result->fetch_assoc()) {
    if (!isset($json_response[ $row['idCategory'] ])) {
        $json_response[ $row['idCategory'] ] = [
            'idCategory' => $row['idCategory'],
            'nameCategory' => $row['nameCategory'],
            'rights' => [],
        ];
    }
    $json_response[ $row['idCategory'] ]['rights'][] = [
        'idRight' => $row['rid'],
        'name' => $row['rname'],
        'price' => $row['price'],
        'image' => $row['rimg']
    ];
}

// We want the final result to ignore the keys and to create a JSON array not a JSON object 
$data = [];
foreach ($json_response as $element) {
    $data[] = $element;
}

echo json_encode($data);

Den här delen av koden $json_response[ $row_array['idCategory'] ] hjälper till att upprätthålla en unik gruppering av data eftersom den skapar en hash baserad på idCategory. En array kan bara ha en nyckel och eftersom idCategory alltid är unik kan vi använda den som nyckel för att gruppera på. Eftersom vi nu har en hash-baserad array måste vi skapa en ny array som är en "riktig" array för när den konverteras till JSON. Du vill inte använda GROUP BY eller GROUP_CONCAT i den här situationen.



  1. hur man förhindrar det här felet:Varning:mysql_fetch_assoc() förväntar sig att parameter 1 är resurs, boolean ges i ... på rad 11

  2. MySQL Full Text Search Mystery

  3. Använda SQL Views för att lägga till/redigera data i Microsoft Access

  4. Räkna data från flera tabeller med hjälp av SUM