0 レビュー
2 回答
mysql-PHPはオブジェクトを配列の配列に変換します
名前を結合してこれで役割を出力した後、3つのテーブルがあります
$encoded = array();
while($res = mysqli_fetch_assoc($result)) {
echo json_encode($res);
}
これを手に入れました
{"student_id":"1","student_name":"john","score_id":"1","score_type":"E","score_name":"England"}
{"student_id":"1","student_name":"john","score_id":"2","score_type":"B","score_name":"Brazil"}
今、私はそれらを私が望むフォーマットに変えるのに苦労しています、クライアントサイトはこれを持っている必要があります
//json
[{
"student_id":"1",
"student_name":"john",
"scores": [{
"score_id":"1",
"score_type":"E",
"score_name":"England"
},{
"score_id":"2",
"score_type":"B",
"score_name":"Brazil"
}]
}]
課題は、同じ人物と行が重複していることです。
わからない
0
レビュー
答え :
解決策:
配列$encoded
を使用して出力を処理し、ビルドされたら、JSONで印刷できます。
このソリューションでは、配列は student_id
でインデックス付けされ、スコアは score_id
でインデックス付けされます。学生の場合は必須ですが、スコアの場合は推奨されます:
$encoded = array();
while($ res = mysqli_fetch_assoc($ result)){
//学生の詳細
$encoded [$ res ['student_id']] = array(
'student_id' => $ res ['student_id']、
'student_name' => $ res ['student_name']、
);
//学生のスコアの詳細
$encoded [$ res ['student_id']] ['scores'] [$ res ['score_id']] = array(
'score_id' => $ res ['score_id']、
'score_type' => $ res ['score_type']、
'score_name' => $ res ['score_name']、
);
}
echo json_encode($encoded);
注:$ resのデータの正確な構造がわからないため、これは一般的な回答です。
わからない
0
レビュー
答え :
解決策:
質問に記載されているjson形式を取得するには、以下のコードを見つけてください
$students = [];
$sampleData = [
[
"student_id"=>"1",
"student_name"=>"john",
"score_id"=>"1",
"score_type"=>"E",
"score_name"=>"England",
],
[
"student_id"=>"1",
"student_name"=>"john",
"score_id"=>"2",
"score_type"=>"B",
"score_name"=>"Brazil",
],
];
foreach ($sampleData as $res) {
//if student not found by id then continue
if (empty($res['student_id'])) {
continue;
}
$student = [];
//get the already exists student to add scores
if(!empty($students[$res['student_id']])) {
$student = $students[$res['student_id']];
}
//prepare the student array
$student['student_id'] = $res['student_id'];
$student['student_name'] = $res['student_name'];
$student['scores'][]['score_id'] = $res['score_id'];
$student['scores'][]['score_type'] = $res['score_type'];
$student['scores'][]['score_name'] = $res['score_name'];
$students[$res['student_id']] = $student;
}
echo json_encode(array_values($students));
これがお役に立てば幸いです
実際の例はここ
にあります
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。