我从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
任何人都可以看到我的代码有任何错误吗?
感谢劳尔
答案 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);