此问题已在此处有答案:
Use json_decode() to create array insead of an object(12个回答)
6小时前关闭
我需要使用PHP向JSON数组追加一个新对象。
JSON:
{
"maxSize":"3000",
"thumbSize":"800",
"loginHistory":[
{
"time": "1411053987",
"location":"example-city"
},
{
"time": "1411053988",
"location":"example-city-2"
}
]}
PHP到目前为止:
$accountData = json_decode(file_get_contents("data.json"));
$newLoginHistory['time'] = "1411053989";
$newLoginHistory['location'] = "example-city-3";
array_push($accountData['loginHistory'],$newLoginHistory);
file_put_contents("data.json", json_encode($accountData));
我一直收到:
致命错误:未捕获错误:无法将stdClass类型的对象用作数组
和null
作为保存JSON文件时“loginHistory”对象的输出。
3条答案
按热度按时间b09cbbtk1#
问题是json_decode默认情况下不返回数组,你必须启用它。看这里:Cannot use object of type stdClass as array?
无论如何,只要在第一行添加一个参数,就可以了:
如果你启用了PHP错误/警告,你会看到这样的:
致命错误:Cannot use object of type stdClass as array in test.php on line 6
qybjjes12#
$accountData
是一个对象,因为它应该是。数组访问无效:laawzig23#
这是一个关于如何使用PHP修改JSON文件的小而简单的指南。
上面代码的逐步解释。
1.我们加载了文件的内容,在这个阶段,它是一个包含JSON数据的字符串。
1.我们使用函数json_decode将字符串解码为关联PHP数组。这允许我们修改数据。
1.我们向contentsDecoded变量添加了新内容。
1.我们使用json_encode将PHP数组编码回JSON字符串。
1.最后,我们修改了文件,用新创建的JSON字符串替换了文件的旧内容。