Как добавить данные в json файл не перетирая те данные, что там находятся?

Используя функцию fwrite(), наткнулся на одну проблему - те данные, что находились в файле заменяются новыми. Что нужно использовать для добавления новых данных в файл? Может нужно использовать другую функцию, по типу file_put_contents? Вот код пхп:

post.php

<?php
$ID = $_POST['pseudoID'];
$arr = $_POST;
unset($arr['pseudoID']);
$fullArray = array(
    "pseudoID" => $ID,
    "data" => array($arr)
);
$fullArray = json_encode($fullArray);
$file = fopen('token_data.json', 'w+');
fwrite($file,$fullArray);
fclose($file);
?>

Ответы (2 шт):

Автор решения: Nickolai Bondarenko

Для того, чтобы добавить новые данные, не перетирая старые, необходимо открыть файл в режиме записи, используя аргумент a+, который перемещает указатель в конец файла.

$file = fopen('token_data.json', 'a+');
→ Ссылка
Автор решения: Roman Grinyov

Если у вас в файле находится JSON и вы хотите добавить каки-либо данные в него, то можно сделать так:

$initialData = ['a' => 1];

file_put_contents('a.txt', json_encode($initialData));

$savedData = json_decode(file_get_contents('a.txt'), true);

$savedData['b'] = 2;

file_put_contents('a.txt', json_encode($savedData));

Если вы хотите добавить данные в конец файла, то можно опять же использовать file_put_contents() с флагом FILE_APPEND:

file_put_contents('a.txt', '1' . "\n");
file_put_contents('a.txt', '2' . "\n", FILE_APPEND);
→ Ссылка