无法通过PHP编辑JSON数组

时间:2018-05-25 20:59:23

标签: javascript php json ajax post

所以我想通过PHP编辑json文件中n个关联数组中的项目。 newcontent和index来自一个javascript,它通过POST将它们发送到这个php文件。 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中选择正确的数组元素。然后更改&#34;内容&#34;的值它从POST获得的$ newcontent的关键,以及&#34; date&#34;的值。 $ newdate的关键。然后将其写回json文件&#34; news.json&#34;。但它只是不想编辑文件。它没有给我一个错误,它什么也没做。该文件保持不变。我检查了控制台,POST工作正常。

编辑:经过一些进一步的测试后,我发现条件设置($ _ POST [&#39; newcontent&#39;]没有返回true,所以其余的代码实际上并没有运行

1 个答案:

答案 0 :(得分:2)

您需要使用json_decode()的可选第二个参数,以便它创建关联数组而不是对象。

$decoded = json_decode($data, true);