sql >> Database teknologi >  >> RDS >> Mysql

Oprettelse af array inde i array fra mysql-data til json

Du skal ommap dit array og derefter initialisere et array for rettighedsnøglen... så skift din while-løkke noget som dette:

$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);

Denne del af koden $json_response[ $row_array['idCategory'] ] hjælper med at opretholde en unik gruppering af dataene, fordi den skaber en hash baseret på idCategory. Et array kan kun have én nøgle, og da idCategory altid er unikt, kan vi bruge det som nøglen til at gruppere på. Da vi nu har et hash-baseret array, er vi nødt til at oprette et nyt array, der er et 'rigtigt' array for når det konverteres til JSON. Du ønsker ikke at bruge GROUP BY eller GROUP_CONCAT i denne situation.



  1. Kommandolinje MySQL-forespørgseleksportoutput til fil fungerer ikke i Windows

  2. Schrödingers MySQL-tabel:eksisterer, men det gør den ikke

  3. MySQL tæller rækkers ydeevne

  4. SQL - Hvordan transponeres?