php从json文件中读取内容然后更新

时间:2017-06-23 08:41:50

标签: php json

我从api电话中获得以下数据:

$userId = 1234;$accessToken = 6789;。我想把它写成一个名为users.json的json文件。

在此之后,我再次拨打api电话并收到以下数据:

$userId = 5678;$accessToken = 0123;

然后我想将它添加到json文件中,使它看起来像这样:

[
    {
        "userId": "1234",
        "accessToken": "6789"
    },
    {
        "userId": "5678",
        "accessToken": "0123"
    },
]

我写入json文件的代码如下所示。 $userId$accessToken在其他地方定义,并返回正确的值:

$content = file_get_contents('users.json');
$tempArray = json_decode($content, true);
print_r($tempArray); // this doesn;t show anything as the users.json file contains `null`

array_push($tempArray, $userId);
array_push($tempArray, $accessToken);
$jsonData = json_encode($tempArray);
file_put_contents('users.json', $jsonData);

不幸的是,这不起作用。当我查看json文件时,它只包含null任何人都可以看到我的代码有任何错误吗?

感谢劳尔

3 个答案:

答案 0 :(得分:1)

你的代码错了。纠正它看起来像这样

 <?php
     $content = file_get_contents('users.json');
     $tempArray = json_decode($content, true);
     if(empty($tempArray)){
       $tempArray = [];
     }
     $newData = [
        "userId" => $userId,
        "accessToken" => $accessToken
     ];
     array_push($tempArray, $newData);
     $jsonData = json_encode($tempArray);
     file_put_contents('users.json', $jsonData);  

这肯定会奏效。

答案 1 :(得分:0)

您需要json_decode($content, true);来获取数组而不是对象。

请参阅http://php.net/manual/fr/function.json-decode.php

同样未正确调用array_push

应该是:array_push($tempArray, ["userid"=>$userId,"accesstoken" => $accessToken]);

答案 2 :(得分:0)

您在json文件中有错误,因此所有建议都无效,请在数组末尾删除,。然后尝试以下代码:

你的json文件应该是:

[
    {
        "userId": "1234",
        "accessToken": "6789"
    },
    {
        "userId": "5678",
        "accessToken": "0123"
    }
]

php:

$content = file_get_contents('user.json');
$tempArray = json_decode($content,true);
$new_array = array("userId"=>$userId,"accesstoken"=>$accessToken);
array_push($tempArray, $new_array);
$jsonData = json_encode($tempArray);
file_put_contents('user.json', $jsonData);
相关问题