sql >> Database >  >> RDS >> Mysql

Array binnen array maken van mysql-gegevens naar json

U moet uw array opnieuw toewijzen en vervolgens een array initialiseren voor de rechtensleutel ... dus verander uw while-lus ongeveer als volgt:

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

Dit deel van de code $json_response[ $row_array['idCategory'] ] helpt bij het behouden van een unieke groepering van de gegevens omdat het een hash creëert op basis van de idCategory. Een array kan maar één sleutel hebben en aangezien idCategory altijd uniek is, kunnen we die gebruiken als de sleutel om op te groeperen. Omdat we nu een op hash gebaseerde array hebben, moeten we een nieuwe array maken die een 'echte' array is voor wanneer het wordt geconverteerd naar JSON. In deze situatie wilt u GROUP BY of GROUP_CONCAT niet gebruiken.



  1. Gegevens ophalen uit opgeslagen procedure met Entity Framework

  2. Callablestatement-fout:ontbrekende IN- of OUT-parameter bij index::1

  3. Genereer datumbereik uit twee datumkolommen

  4. MySQL-databases maken en onderhouden in cPanel