Générer une réponse JSON sur le serveur avec JsonArray et les champs uniques

J’essaie de créer une réponse JSON à partir de mon serveur, mais cela ne fonctionne pas comme prévu.

C’est probablement quelque chose de simple mais, je ne suis pas si bon en PHP …

La réponse attendue de base est un JSON avec un seul JsonArray et quelques autres champs. Pour cela, le morceau de code correspondant est affiché ici:

Exemple de réponse JSON attendue:

{ "pageNr": 2 "totalPages":28 "products":[ { "user_name":"testUser001", "product_ID":"4756373abdhg" }, { "user_name":"testUser002", "product_ID":"475ggdfghghg" }, { "user_name":"testUser003", "product_ID":"47466gdgbdhg" }, { "user_name":"testUser004", "product_ID":"4000nfaergeb" }, { "user_name":"testUser005", "product_ID":"adfer73abdhg" } ] } 

Code PHP de base utilisé pour générer le JSON souhaité (parmi les requêtes SQL et autres):

 $res = array(); $res2 = array(); while($r = mysqli_fetch_assoc($query2)) { $res["user_name"] = $r["user_name"]; $res["product_ID"] = $r["prod_ID"]; array_push($res2,$res); } $response = ['pageNr' => $page]; $response = ['totalPages' => $totalPages]; $response = ['products' => $res2]; 

Réponse que ce code génère sur Postman:

 { "products":[ { "user_name":"testUser001", "product_ID":"4756373abdhg" }, { "user_name":"testUser002", "product_ID":"475ggdfghghg" }, { "user_name":"testUser003", "product_ID":"47466gdgbdhg" }, { "user_name":"testUser004", "product_ID":"4000nfaergeb" }, { "user_name":"testUser005", "product_ID":"adfer73abdhg" } ] } 

Donc, pour une raison quelconque, la réponse JSON n’accepte pas plus de champs pageNr et totalPages .

Qu’est-ce qui ne va pas ici?

Chaque affectation remplace votre tableau. Vous devez le mettre à jour à la place:

 $res = array(); $res2 = array(); while($r = mysqli_fetch_assoc($query2)) { $res["user_name"] = $r["user_name"]; $res["product_ID"] = $r["prod_ID"]; array_push($res2,$res); } $response = []; $response['pageNr'] = $page; $response['totalPages'] = $totalPages; $response['products'] = $res2; 

Essayer;

 $res = array(); $res2 = array(); while($r = mysqli_fetch_assoc($query2)) { $res["user_name"] = $r["user_name"]; $res["product_ID"] = $r["prod_ID"]; array_push($res2,$res); } $response .= ['pageNr' => $page]; $response .= ['totalPages' => $totalPages]; $response .= ['products' => $res2];