Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tạo mảng bên trong mảng từ dữ liệu mysql sang json

Bạn cần remap mảng của mình và sau đó khởi tạo một mảng cho khóa quyền ... vì vậy, hãy thay đổi vòng lặp while của bạn như sau:

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

Phần này của mã $json_response[ $row_array['idCategory'] ] giúp duy trì một nhóm dữ liệu duy nhất vì nó tạo ra một hàm băm dựa trên idCategory. Một mảng chỉ có thể có một khóa và vì idCategory luôn là duy nhất nên chúng ta có thể sử dụng nó làm khóa để nhóm trên. Vì vậy, vì bây giờ chúng ta có một mảng dựa trên băm, chúng ta phải tạo một mảng mới là mảng 'thực' cho khi nó được chuyển đổi thành JSON. Bạn không muốn sử dụng GROUP BY hoặc GROUP_CONCAT trong trường hợp này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt giá trị đầu vào theo tùy chọn chọn trong php

  2. Yêu cầu bị kẹt trong phần mềm trung gian ActiveRecord ::QueryCache

  3. Chèn mysqli PHP không hoạt động, nhưng không đưa ra bất kỳ lỗi nào

  4. Làm cách nào để xuất văn bản từ cơ sở dữ liệu với dấu ngắt dòng trong mẫu django?

  5. Quyền truy cập bị từ chối đối với 'user' @ 'localhost'