我試圖從簡單的mysqli_query
製作.json
文件。我已經試過這樣:從遞歸合併的php數組編碼json
$res=mysqli_query($link, "SELECT * FROM Teams");
$i=0;
while ($row =mysqli_fetch_assoc($res)) {
$jshteam[$i]=$row['shteam'];
$jbyteam[$i]=$row['byteam'];
$jcountry[$i]=$row['country'];
$arrteams[$i]= array("".$jshteam[$i].""=>"country"=>"".$jcountry[$i]."","byteam"=>"".$jbyteam[$i].""]);
$i++;
}
$json_data= json_encode(array_merge_recursive($arrteams));
file_put_contents('json/teams.json', $json_data);
做這件事時,的teams.json
結果如下(前兩個元素):
[{"TEA":{"country":"Turkey","byteam":"TeamName1"}},{"VIS":{"country":"Germany","byteam":"TeamName2"}}]
我不會在beggining和喜歡的東西[]
字符串的結尾。如果我改變這一行我的代碼如下:
$json_data= json_encode(array_merge_recursive($arrteams[0],$arrteams[1]));
file_put_contents('json/teams.json', $json_data);
...然後我得到正是我想要的:
{"TEA":{"country":"Turkey","byteam":"TeamName1"},"VIS":{"country":"Germany","byteam":"TeamName2"}}
的問題是,我不能手動使array_merge_recursive
,如在第二種形式中,因爲我不知道查詢有多少結果。它會是這樣的:
$json_data= json_encode(array_merge_recursive($arrteams[0],$arrteams[1],$arrteams[2]....$arrteams[?]));
你會如何做到這一點?
你甚至都不需要'$ byteam'和'$ country'。你可以執行unset($ row ['jsteam']);'(可選)然後'$ arr [$ jsteam] = $ row;'。不過,這是一個很好的答案。 – axiac
謝謝。我接受多莉阿斯溫的答案,因爲它更接近我所尋找的。你的答案仍然非常好,很有用。 – Javi