読者です 読者をやめる 読者になる 読者になる

mogami74開発日誌

フリーライターがPHPとかJavaとか勉強してます

jsonデータを開いて連結する

json_encode()で作ったデータをつなぎたい。

最初はMySQLのクエリでLEFT JOINしようとしたんだけど、欲しいデータが2重ループみたいな感じになっている。

foo1
 bar1
 bar2
foo2
 barA
 barB
 barC

MySQLのLEFT JOINで作ると、1段階目のデータが重複してちょっと扱いづらい。まぁ重複して出て来たデータは無視すりゃいいんだけども。

foo1 bar1
foo1 bar2
foo2 barA
foo2 barB
foo2 barC

MySQLの結果もらってfetchで回す時に、2重ループ作るしかないか…。

while($result1=$stmt->fetch(PDO::FETCH_ASSOC)){

 echo json_encode($result1);
 while($result2=$stmt->fetch(PDO::FETCH_ASSOC)){
  echo json_encode($result2);
 }

}

いや、待てこれもダメだな。json_encode($result1)の中にjson_encode($result2)を入れてやらないといかんのだな。$result1開いて書くしかないか……。

echo "{";
while($result1=$stmt->fetch(PDO::FETCH_ASSOC)){

 echo $resutl1['hoge'];
 echo $result1['honya];
 while($result2=$stmt->fetch(PDO::FETCH_ASSOC)){
  echo json_encode($result2);
 }

}
echo "}";

……正直めんどくさいけどしょうがないか。