Не могу редактировать массив JSON через PHP - PullRequest
0 голосов
/ 25 мая 2018

Итак, я хочу отредактировать элемент в ассоциативном массиве в файле json через PHP.Newcontent и index происходят из JavaScript, который отправляет их в этот файл php через POST.Файл JSON выглядит следующим образом:

[{"title":"This is a title","content":"foo bar","date":"Friday 25th May 2018 
10:52:01 PM"}]

И PHP:

<?PHP
if (isset($_POST['newcontent']) && isset($_POST['index'])) {
 $data = file_get_contents("news.json"); 
 $decoded = json_decode($data); 

 $index = $_POST['index'];
 $newcontent = htmlspecialchars($_POST['newcontent']);
 $newdate = date('l jS F Y h:i:s A');
 $decoded[$index]["content"] = $newcontent;
 $decoded[$index]["date"] = $newdate;

 $output = json_encode($decoded);
 file_put_contents("news.json", $output);
 }
?>

Итак, что нужно сделать, это выбрать правильный элемент массива в json через значение индекса.Затем измените значение ключа «content» на $ newcontent, полученное из POST, а значение ключа «date» на $ newdate.Затем запишите его обратно в файл json "news.json".Но он просто не хочет редактировать файл.Это не дает мне ошибки, просто ничего не делает.Файл остается без изменений.Я проверил в консоли, и POST работает нормально.

EDIT: после некоторого дальнейшего тестирования я обнаружил, что условие установлено ($ _ POST ['newcontent'] не возвращает true, поэтому остальная часть кода не 'т на самом деле запустить

1 Ответ

0 голосов
/ 26 мая 2018

Вам необходимо использовать необязательный второй аргумент для json_decode(), чтобы он создавал ассоциативные массивы, а не объекты.

$decoded = json_decode($data, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...