jsonファイル内のオブジェクトの1つの値を更新しようとしています。問題は、同じキーと値のペアを持つ同じjsonファイル内にいくつかの兄弟があることです。PHPを使用してJSONファイルの値を更新する方法
マイJSONファイルはそうのようになります。
{"LogIns":[
{"Username":"Alfred",
"password":"123",
"Won":0,"Lost":0},
{"Username":"Farrah",
"password":"123",
"Won":0,"Lost":0}]}
たびに誰かが手を(それはカードゲームです)、私はゲームの数が勝敗更新する必要が勝ちます。
これは、PHPファイルへのAJAX呼び出しです:
AJAX:あなたはHTMLがすべて正しく、本当に必要されていないこと、それは私の言葉を取ることができ
var username = localStorage.getItem("username");
if(document.getElementById(btnId).value == answer){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange=function() {
console.log("returned:", xhttp.responseText);
}
xhttp.open("POST", "leaderboard.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("username=" + username + "&won=1");
}
else{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange=function() {
console.log(xhttp.responseText);
}
xhttp.open("POST", "leaderboard.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("username=" + username + "&lost=1");
}
setTimeout(reloadPage, 2000);
}
私のPHPファイルは次のようになります:
PHP:
<?php
$username = $_POST['username'];
if(isset($_POST['won'])){
$won = $_POST['won'];
//echo $won;
}
if(isset($_POST['lost'])){
$lost = $_POST['lost'];
//echo $lost;
}
$str = file_get_contents('logins.json'); // Save contents of file into a variable
$json = json_decode($str, true); // decode the data and set it to recieve data asynchronosly - store in $json
foreach($json['LogIns'] as $res){
if($res['Username']==$username){
if(isset($won)){
$add = $res['Won'];
$add = ($add + $won);
$res['Won'] = $add;
echo $res['Won'];
}
else{
$add = $res['Lost'];
$add = ($add + $lost);
$res['Lost'] = $add;
echo $res['Lost'];
}
break;
}
}
file_put_contents('logins.json', json_encode($json));
?>
画面に印刷されてxhttp.responseText
が(「1」)は常にあるが、私ますprint_r $ jsonの勝敗フィールドはまだ0
で誰もが私が間違ってやっている知っています?
これまでどおり、大変助かりました。まもなく
おかげ
を 'ブレークを使用して、なぜ。 '?まだif-elseステートメントでそれを見ていない。 –
@JeroenBellemansそれは 'foreach'ループから抜け出す –
ええ、いくつかの研究は、後で便利かもしれません:)ありがとう –