sql >> Databáze >  >> RDS >> Mysql

Vytváření pole uvnitř pole z dat mysql do json

Musíte přemapovat své pole a poté inicializovat pole pro klíč práv... takže změňte smyčku while nějak takto:

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

Tato část kódu $json_response[ $row_array['idCategory'] ] pomáhá udržovat jedinečné seskupení dat, protože vytváří hash na základě idCategory. Pole může mít pouze jeden klíč, a protože idCategory je vždy jedinečné, můžeme jej použít jako klíč pro seskupování. Poté, protože nyní máme pole založené na hash, musíme vytvořit nové pole, které je „skutečným“ polem pro když je převeden na JSON. V této situaci nechcete používat GROUP BY nebo GROUP_CONCAT.



  1. Jak (unit-)testovat datově náročnou PL/SQL aplikaci

  2. Hledejte v různých sloupcích oddělením čárky

  3. Je možné spustit pravidlo apriori asociace v příkazu mysql?

  4. Chyba MySQL #2014 – Příkazy nejsou synchronizované; tento příkaz nyní nemůžete spustit