sql >> データベース >  >> RDS >> Mysql

mysqlデータからjsonへの配列内の配列の作成

    配列を再マップしてから、rightsキーの配列を初期化する必要があります...したがって、whileループを次のように変更します。

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

    コードのこの部分$json_response[ $row_array['idCategory'] ] idCategoryに基づいてハッシュを作成するため、データの一意のグループ化を維持するのに役立ちます。配列は1つのキーしか持つことができず、idCategoryは常に一意であるため、それをグループ化のキーとして使用できます。次に、ハッシュベースの配列があるため、「実際の」配列である新しい配列を作成する必要があります。 JSONに変換されるとき。この状況では、GROUPBYまたはGROUP_CONCATを使用しないでください。



    1. PHPを使用してWiktionaryXMLデータダンプをMySQLデータベースに解析します

    2. 空のフィールドを無視して1つ以上のフィールドをmysqlデータベースに更新する方法は?

    3. 挿入...選択...サブクエリありまたは列順なし

    4. MySQLで助成金を表示する