PHPを使用してJSONファイルを更新しようとしていますが、現在のコードが行っていることは、新しいオブジェクトを置き換える代わりに追加することです。ここではJSONの抜粋です:PHPを使用したJSONファイルの更新
[
{
"id": 3,
"title": "SOME MODS",
"date": "Aug\/Sept 2017",
"done": "yes",
"files changed": {
"1": "index.html",
"2": "style.css"
},
"backend changes\/additions": {
"1": "added some stuff"
},
"additions": {
"1": "logo.jpg"
}
}
]
は基本的に私が何をしたいのphpファイルをヒットするAJAX機能を呼び出すボタンをクリックの上にあります。次に、渡されたIDがJSONファイルのIDと一致するかどうかを確認し、「完了」プロパティを更新します。
は、ここに私のPHPコードです:
if (isset($_POST['comp'])) {
$newObj = $_POST['comp'];
$jsonFile = file_get_contents('data.json');
$temp = json_decode($jsonFile, true);
$tempArray;
foreach($temp as $e){
if($e['id'] == $newObj) {
if ($e['done'] === 'no'){
$e['done'] = 'yes';
$tempArray = $e;
} else {
$e['done'] = 'no';
$tempArray = $e;
}
}
}
$temp[] = $tempArray;
$final_data = json_encode($temp, JSON_PRETTY_PRINT);
file_put_contents('data.json', $final_data);
print_r($temp);
しかし、私が述べたように、それはスタンドとしてすべてのそれは交換するのではなく、新しいオブジェクトを挿入されてやっています。この機能を動作させるためには何を変更する必要がありますか?
ありがとうございます。
-S
$ temp []が$ tempに追加されます。 []を削除します。 – endrju
ここに '$ temp [] = $ tempArray;'新しいコンテンツを追加しています。 – Jeff
あなたは[reference](http://php.net/manual/en/language.references.pass.php)でforeachしたいと思います。この方法で、配列全体を歩き回り、変更したい値を変更することができます。 – Jeff