2017-06-01 5 views
-3

こんにちは私はPHPでjson形式でグループ化する方法に問題があります。グループJSON形式をPHPで取得する

ここに私のコードです。

$sql = "SELECT * FROM event as e 
     JOIN course as c ON e.id = c.event_id 
     JOIN hold as h ON c.id = h.course_id 
     GROUP By h.id"; 

$query = mysqli_query($con, $sql); 

$data = []; 
while($row = mysqli_fetch_assoc($query)) { 

    $eInfo = new stdClass(); 
    $eInfo->e_info = []; 

    $event = new stdClass(); 

    $event->e_code = $row['e_code']; 
    $event->c_info = []; 

    $course = new stdClass(); 
    $course->c_code = $row['course_code']; 
    $course->h_info = []; 

    $hold = new stdClass(); 

    $hold->h_code = $row['hold_code']; 

    $course->h_info[] = $hold; 

    $event->c_info[] = $course; 

    $eInfo->e_info[] = $event; 

    $data[] = $eInfo; 

} 

$json = json_encode($data, JSON_PRETTY_PRINT); 
return $json 

結果は次のとおりです。

[ 
{ 
    "e_info": [ 
     { 
      "e_code": "e001", 
      "c_info": [ 
       { 
        "c_code": "C001", 
        "h_info": [ 
         { 
          "h_code": "h001" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
}, 
{ 
    "e_info": [ 
     { 
      "e_code": "e001", 
      "c_info": [ 
       { 
        "c_code": "C001", 
        "h_info": [ 
         { 
          "h_code": "h002" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
}, 
{ 
    "e_info": [ 
     { 
      "e_code": "e001", 
      "c_info": [ 
       { 
        "c_code": "C002", 
        "h_info": [ 
         { 
          "h_code": "h001" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
}, 
{ 
    "e_info": [ 
     { 
      "e_code": "e001", 
      "c_info": [ 
       { 
        "c_code": "C002", 
        "h_info": [ 
         { 
          "h_code": "h002" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 
] 

e_codeとcourse_codeは重複していると私はグループにこれらをしたいです。 phpをjson形式としてjson配列をこのようにすることは可能ですか?

[ 
{ 
    "e_info": [ 
     { 
      "e_code": "e001", 
      "c_info": [ 
       { 
        "c_code": "c001", 
        "h_info": [ 
         { 
          "h_code": "h001" 
         }, 
         { 
          "h_code": "h002" 
         } 
        ] 
       }, 
       { 
        "c_code": "c002", 
        "h_info": [ 
         { 
          "h_code": "h001" 
         }, 
         { 
          "h_code": "h002" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 
] 

お願いします。ありがとうございました。

+4

ようなあなたのSELECT文でGROUP BYを試みなければなりませんか? –

+0

コードの一部を共有できますか? – Rtra

+0

私はplzの質問を編集します。 –

答えて

0

あなたは何があなたを停止するので、この

"SELECT * FROM tablename GROUP BY e_code, c_code"; 
+0

json形式でのみグループ化したいですか? –

+0

データ群が重複する場合 –

+0

はい、これは、あなたの列 'h_code'が異なる値を含み、GROUP BYに含まれていないためです – Rtra

関連する問題