JSON応答のための単一の行に同一のアイテムIDの複数の行とMY SQLクエリ結果をマージ

Pranjalヴァツサ国:

私はPHPとWordpressのに新しいです。私はWordpressの上のカスタムAPIを構築しようとしています。私は、INNERが2つのテーブルと戻り、同じアイテムIDのために複数の行を結合するためにJOINを使用して私のSQLクエリを持っています。私は、JSONレスポンスに結果セットを変換しようとしています。

問題は、私はIDが同じであっても、それぞれのアイテムIDの新しいJSONオブジェクトを取得しています。

下記の私のSQLクエリを参照してください。

SELECT id, title, answer from wp_tb1 wp1 INNER JOIN wp_tb2 wp2 ON wp1.belongs_id = wp2.id

PHPコード:

$data=array();
$count=0;
foreach($list as $l){
            $data[$count]=array(
            "id" =>$l->id,
            "title"=>$l->title,
            "answer"=> array($l->title),
            );
        ++$count;
    }

JSONの結果は次のようになります。

"[{"id":"1","title":"Title 1","answer":"True"},{"id":"1","title":"Title 1","answer":"False"}]"

あなたが見ることができるように、id値を繰り返しているので、タイトルです。私は、応答のようなものになりたいです

"[{"id":"1","title":"Title 1","answer":{"True","False"}}]"

クエリを使用またはPHPコードレベルでのすべてのヘルプは有用であろう。

ポール・シュピーゲル:

あなたのループは、これに変更します。

$data = [];
foreach ($list as $l) {
    $data[$l->id]['id'] = $l->id;
    $data[$l->id]['title'] = $l->title;
    $data[$l->id]['answer'][] = $l->answer;
}
$data = array_values($data);

この意志グループネストされた配列によるidtitle(私はタイトルが同じIDに対して同じであると仮定しています)。

$data 今含まれています

[{"id":"1","title":"Title 1","answer":["True","False"]}]

参照してくださいデモ

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=20475&siteId=1