Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Tworzenie tablicy wewnątrz tablicy z danych mysql do json

Musisz przemapować swoją tablicę, a następnie zainicjować tablicę dla klucza praw... więc zmień pętlę while w taki sposób:

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

Ta część kodu $json_response[ $row_array['idCategory'] ] pomaga zachować unikalne grupowanie danych, ponieważ tworzy skrót na podstawie idCategory. Tablica może mieć tylko jeden klucz, a ponieważ idCategory jest zawsze unikalny, możemy użyć go jako klucza do grupowania. Następnie, ponieważ mamy teraz tablicę opartą na hash, musimy utworzyć nową tablicę, która jest „rzeczywistą” tablicą dla gdy jest konwertowany na JSON. W tej sytuacji nie chcesz używać GROUP BY ani GROUP_CONCAT.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Automatyzacja wdrażania bazy danych MySQL

  2. Resetowanie hasła ROOT w MySQL 5.6

  3. PHP PDO wstawia wiele (10000+) tych samych wierszy za pomocą bindParam. Dobra praktyka?

  4. Kiedy MySQL aktualizuje indeksy?

  5. Konwertuj BIGINT UNSIGNED na INT