2017-12-31 51 views
1

私はPHPに新しいです、私は3日以内にそれを学ぶ、私はスタックしている、私は#Cの背景から来た。以下は私の行の結果です。残りのAPIは、PHPで返された行のデータを正規化mysqlは

while($row = mysqli_fetch_assoc($rowult)) { 
    echo json_encode($row); 
} 

//result of echo json_encode($row); 
{"id":"1","name":"john","blood_type_id":"1","value": 213,"blood_name":"dog"}{"id":"1","name":"john","blood_type_id":"2","value": 888,"blood_name":"bat"} 

このようなjsonを構築するにはどうすればよいですか?

以下のように行います: - - :

[{ 
    "id":1, 
    "name":"john", 
    "blood":[{blood_type_id: 1},{value:213},{blood_name:"dog"}, 
      {blood_type_id: 2},{value:888},{blood_name:"bat"}] 
}] 
+0

MySql5.7以降では、JSONと呼ばれる非構造化型でデータを保存できます。必要ならば、jsonの完全な文字列を保存し、このjsonのサブセットを問い合わせることができます。 – 4EACH

+0

@ 4EACHしかし、今私はこの単純なAPI構造体を出力しなければなりません。どうやって普通にやるの?私はPHPの男ではない、私は助けが必要です:( –

+0

@ GlobinHughesあなたのデータ形式は、出力のためのあなたの仕様は私には意味がありませんが、私のフォーマットをいくつか結果を与えたサービスを使用していた場合、 – YvesLeBorg

答えて

2

は、あなたはそれが配列を作成し、最初にして最後のエンコードで、各データを割り当てる必要が

$final_array = [];// create an array 
while($row = mysqli_fetch_assoc($rowult)) { 
    $final_array[$row['name']]['id'] = $row['id']; // use name as key so that same name records will come inside single-array 
    $final_array[$row['name']]['name'] = $row['name']; // assign values to array 
    $final_array[$row['name']]['blood'][] = [['blood_type_id'=>$row['blood_type_id']],['value'=>$row['value']],['blood_name'=>$row['blood_name']]]; // since you need `blood` as an array so create a key blood an assign values to them like an array 
} 

$final_array = array_values($final_array); // now remove name indexes 

echo json_encode($final_array); // final encoded data 

ハードコーディングされたサンプルの出力例: - https://eval.in/928775

+0

これはPHPのやり方が常にデータ再構成を行う方法です。 –

+0

print_r私が欲しいものを私に与えることはできません、どのようにjsonでそれを作るのですか?それを読むためにはJavaScriptが必要です –

+0

@GlobinHughes cheそのソリューションを編集したck。私はあなたが尋ねたもののためにそれを変更しました –

関連する問題