AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"

Почему в json записывается не правильно?

Так задаю переменные
$content = ["$emailr" => "$passwordr"];
$contentJson = json_encode($content);
file_put_contents($filename,$contentJson, FILE_APPEND );

Содержание json:
{
  "asd@asd.asd": "123Qwe123",
  "email@mail.ru":"Qwe123Qwe"
}

Когда добавляю через php, вводит так:
{
  "asd@asd.asd": "123Qwe123",
  "email@mail.ru":"Qwe123Qwe"
}{"qwe@qwe.qwe":"123Qwe123"}

Что сделать что бы он записывался к предыдущем двум?
  • Вопрос задан
  • 405 просмотров
Решения вопроса 1
profesor08
@profesor08 Куратор тега PHP
Все правильно у тебя получается. В точности то, что ты написал и никакой магии. Ты создаешь json строку, ее ты пишешь в конец файла, и все. Ты не добавляешь новые данные в json строку, которая в файле. Ты просто пишешь строку в файл: {...}{...}{...}{...}...
Тебе надо переделать свой код, сначала прочитать файл, потом преобразовать данные в json, добавить туда свои данные, преобразовать обратно в строку и перезаписать файл.
$json = file_get_contents($filename);
$array = json_decode($json);
$array[$emailr] = $passwordr;
file_put_contents($filename, json_encode($array));

Также надо учитывать, что файл может оказаться пустым, или битым, то есть добавить проверки на ошибки и тд.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы