我有以下php脚本,其中我尝试编写一个包含数组内容的JSON文件:
$name = "TEST";
$type = "TEST";
$price = "TEST";
$upload_info = array();
$upload_info = array('name'=>$name,'type'=>$type,'price'=>$price);
$temp_array = json_decode(file_get_contents('upload.json'));
array_push($temp_array, $upload_info);
file_put_contents('items.json', json_encode($temp_array));
$json = json_encode($upload_info);
$file = "items.json";
file_put_contents($file, $json);
这会将以下行添加到items.json:
{"name":"TEST","type":"TEST","price":"TEST"}
它也会出现此错误:
PHP Warning: array_push() expects parameter 1 to be array, null given in /var/www/html/list/add.php on line 13
我理想的做法是让我的脚本添加到json文件的特定部分,如下所示:
{
"GC": [
{ "Name":"Thing" , "Price":"??" , "Link":"www.google.com" },
{ "Name":"Thing" , "Price":"??" , "Link":"www.google.com" }
]
"0": [
]
"10": [
]
"20": [
]
"30": [
]
"40": [
]
"50": [
]
"60": [
]
"70": [
]
"80": [
]
"90": [
]
"100": [
]
"200": [
]
"300": [
]
"400": [
]
"500": [
]
}
这些数组中的每一个在添加add.php后都会保存项目(类似于GC数组)。这可能吗?如果是这样,我该怎么做?
是否可以选择我想要添加条目的json的特定部分?有更简单的方法吗?我只是在寻找一种不使用数据库来存储数据的解决方案。
答案 0 :(得分:1)
您需要使用json_decode()的第二个参数true
来获取数组结果,例如:
$temp_array = json_decode(file_get_contents('upload.json'), true);
//get the needed values from $temp_array
//create a new array out of it
file_put_contents('items.json', json_encode($your_final_array));