Json文件替换数据而不是添加

时间:2018-05-18 07:26:16

标签: php json

我有一个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”值。但它不会覆盖旧数据。

1 个答案:

答案 0 :(得分:0)

file_put_contents的默认行为是替换文件。根据{{​​3}},"现有文件被覆盖,除非设置了FILE_APPEND标志。"

然而,正如@deceze指出的那样,你实际上并不想附加到你的JSON文件,因为它不是有效的JSON。您需要读入现有的JSON文件,更新它然后覆盖。您还需要将对象添加到顶级数组中,如下所示:

{
    "exercises": []
}