php - how to make array of array by looping result from a query -
i have survey games, , have 1 table games data, , people's answers.
i want output array in json format answers each of 3 favorite games name , year in array of array.
expected output
[ { "id": "1", "username": "userx", "g1": {"name": "game1", "year": "1991"}, "g2": {"name": "game2", "year": "1992"}, "g3": {"name": "game3", "year": "1993"}, } ] what i've tried
$sql = "select * tbanswers answer inner join tbgames game on answer.g1 = game.id"; try { $db = new db(); $db = $db->connect(); $stmt = $db->prepare($sql); $stmt->execute(); $answer = $stmt->fetchall(pdo::fetch_obj); $db = null; if(empty($answer)) { $response->getbody()->write (' { "error": { "status":"400", "message":"invalid request" } }'); } else { $response->getbody()->write(json_encode($answer)); } } catch(pdoexception $e) { $response->getbody()->write (' { "error": { "message":'. $e->getmessage() .' } }'); } the current output
[ { "id": "1", "username": "userx", "name": "game1", "year": "1991" } ] i think should foreach somewhere in else go through each game , echo result of based on id answers, not sure how apply
- where place foreach
- how select , results based on each game id
- how in json format
i'm sure it's not how doing it, how trying echo data in else
echo"["; echo"\n{"; echo"\n"; echo '"id:"'.' "'.$answer[0]->id.'",'; echo"\n"; echo"}\n"; echo"]"; here tables structure
tbgames
id , name , year 1 , 'game1' , '1991' 2 , 'game2' , '1992' 3 , 'game3' , '1993' 4 , 'game4' , '1994' tbanswers
id , name , g1 , g2 , g3 1 , userx , 1 , 2 , 3 2 , usery , 3 , 1 , 4 3 , userz , 1 , 1 , 2 4 , userw , 2 , 3 , 4
using query:
$sql = "select answer.id a_id, answer.name a_name, game1.id g1_id, game1.name g1_name, game1.year g1_year, game2.id g2_id, game2.name g2_name, game2.year g2_year, game3.id g3_id, game3.name g3_name, game3.year g3_year tbanswers answer inner join tbgames game1 on answer.g1 = game1.id inner join tbgames game2 on answer.g2 = game2.id inner join tbgames game3 on answer.g3 = game3.id"; you should change else statement content to:
} else { foreach($answer $value) { $array_resp[]=[ 'id' => $value->a_id, 'username' => $value->a_name, 'g1' => ['name'=>$value->g1_name, 'year'=>$value->g1_year], 'g2' => ['name'=>$value->g2_name, 'year'=>$value->g2_year], 'g3' => ['name'=>$value->g3_name, 'year'=>$value->g3_year], ]; } $response->getbody()->write(json_encode($array_resp)); }
Comments
Post a Comment