我将以下JSON文件存储在服务器中。我使用PHP脚本将另一个对象添加到此JSON文件。
testjson1.json:
{
"feed":
[
{
"id": "1",
"name": "Ram",
"status": "Very good restaurant!! water tastes soo good :)"
}
]
}
我用来添加对象的php如下:
<?php
$data=array("2","new","not so good");
$inp = file_get_contents('testjson1.json');
$tempArray = json_decode($inp);
array_push($tempArray, $data);
$jsonData = json_encode($tempArray);
file_put_contents('testjson1.json', $jsonData);
?>
但是php文件显示错误,上面写着:
警告:array_push()要求参数1为数组,对象在第5行的/home/u160481344/public_html/jsonfinder.php中给出
并且json文件折叠成一行。我该如何解决这个问题?
答案 0 :(得分:2)
答案 1 :(得分:1)
添加第二个布尔参数TRUE,返回的对象将被转换为关联数组。
只需替换此行
$tempArray = json_decode($inp);
有了这个
$tempArray = json_decode($inp,true);
答案 2 :(得分:1)
PHP函数json_decode()
解码一个JSON字符串,它接受一个JSON编码的字符串并将其转换为PHP变量。
下面编写的脚本返回对象数据类型中的PHP变量。
$inp = file_get_contents('testjson1.json');
$tempArray = json_decode($inp);
但PHP函数array_push()
仅接受数组作为输入参数。您可以将第二个参数(可选)布尔类型传递给json_decode()函数,例如 json_decode($json_string, TRUE)
,它将在关联数组中返回解码PHP变量。
你必须像这样更新你的代码 -
$inp = file_get_contents('testjson1.json');
$tempArray = json_decode($inp, TRUE);
有关更多参考,请参阅此链接PHP函数json_decode()。