Страницы

Поиск по вопросам

понедельник, 18 марта 2019 г.

Запись массива в json файл

Есть html страница с 3 input-и type="radio"(один из них submit), при выборе одного и нажатия на подтверждающую кнопку данные какая кнопка выбрана обрабатываются php скриптом и записываются в json файл. Но проблема в том, что когда один раз выбираешь первый а потом второй то в файл записывается вместо одной из цифр(кол-ва нажатий конкретно на этот input) какие-то знаки.Переменные $yes и $no меняются в зависимости от того как часто нажимали на каждую из кнопок. Вот весь код php

How are you?

Good:
Bad:

Вот весь код php
$filename = "data.json"; $content = file($filename);
$array = explode(",", $content[0]); $yes = isset($array[0]) ? $array[0] : 0;; $no = isset($array[1]) ? $array[1] : 0;;
if ($vote == 0) { $yes += 1; } if ($vote == 1) { $no += 1; }
$insertvote = [ 'Good: ' => $yes, 'Bad: ' => $no ]; $pretty = json_encode($insertvote, JSON_PRETTY_PRINT); $fp = fopen($filename,"w"); fputs($fp,$pretty); fclose($fp); ?>
Вот вывод json файла
{ "Good: ": "{
", "Bad: ": 1 }


Ответ

Проблема в том, что Вы не декодируете json перед использованием:
$content = json_decode(file_get_contents($filename), true) ?: ['Good' => 0, 'Bad' => 0];
if ($vote == 0) $content['Good'] += 1; if ($vote == 1) $content['Bad'] += 1;
file_put_contents($filename, json_encode($content));

Комментариев нет:

Отправить комментарий