我有一个Json文件,我正在为我的网站使用,但是当我填写表单并将其发送到我的Json文件时,它会以某种方式用新的数据替换旧数据而不是添加增量。
我的json / php设置:
$id = '';
if(isset($_POST['submit'])) {
if(file_exists('json_files/database.json')) {
$current_data = file_get_contents('json_files/database.json');
$array_data = json_decode($current_data, true);
$last_item = end($array_data);
$last_item_id = $last_item['id'];
$arrExercise = array(
'id' => ++$last_item_id,
'exerciseTitle' => $Title,
'exerciseWord' => $question_takeAudio_exerciseWord,
'syllables' => $Syllables
);
$array_data[] = $extra;
$final_data = json_encode($array_data, JSON_PRETTY_PRINT);
if(file_put_contents('json_files/database.json', $final_data)) {
header("Location: exercise_CMS.php");
} else {
echo "Oopsie! Something went wrong!";
exit();
}
}
}
我的json:
{
"id": 1,
"exerciseTitle": "Huisss",
"exerciseWord": [
"Huisarts"
],
"syllables": [
"Huis",
"arts"
]
}
现在,如果我再次填写我的表单,上面的内容将被替换为新数据发送到我的json文件。但是,我希望它以+1的增量添加到下面。我错过了什么吗? 编辑:json / php设置已更新。但很可能我仍然缺少部分,因为现在它返回一个“0 null”值。但它不会覆盖旧数据。
答案 0 :(得分:0)
file_put_contents
的默认行为是替换文件。根据{{3}},"现有文件被覆盖,除非设置了FILE_APPEND标志。"
然而,正如@deceze指出的那样,你实际上并不想附加到你的JSON文件,因为它不是有效的JSON。您需要读入现有的JSON文件,更新它然后覆盖。您还需要将对象添加到顶级数组中,如下所示:
{
"exercises": []
}