我想通過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"
}
}
]
基本上就是我想要做的是點擊按鈕調用AJAX功能打一個PHP文件。然後檢查通過的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
here'$ temp [] = $ tempArray;'你正在添加新的內容。 – Jeff
我想你想通過[reference](http://php.net/manual/en/language.references.pass.php)進行foreach。通過這種方式,您可以遍歷數組並更改要更改的值。 – Jeff