我有一个非常简单的JSON文件" json.txt" :
{
"status": true,
"data":
{
"clics":
[
{
"id": "1",
"title": "Title 1",
"comment": "Blablabla 1",
"url": "http://photostodisplay/1.jpg"
},
{
"id": "2",
"Title": "Title 2",
"comment": "Blablabla 2",
"url": "http://photostodisplay/2.jpg"
}
]
}
}
我想添加数据并得到以下结果:
{
"status": true,
"data":
{
"clics":
[
{
"id": "1",
"title": "Title 1",
"comment": "Blablabla 1",
"url": "http://photostodisplay/1.jpg"
},
{
"id": "2",
"Title": "Title 2",
"comment": "Blablabla 2",
"url": "http://photostodisplay/2.jpg"
},
{
"id": "3",
"Title": "Title 3",
"comment": "Blablabla 3",
"url": "http://photostodisplay/3.jpg"
}
]
}
}
我使用的php代码返回以下错误:
致命错误:无法在第10行的/home/XXXX/www/clic/test.php中使用stdClass类型的对象
这是php代码
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
$file = 'json.txt';
$data = json_decode(file_get_contents($file));
$newdata = array('id'=>'11', 'title' => 'sfdfsdfqf', 'comment' => 'sfdfwwfwdsdfqf', 'url' => 'sdfqwsfsdqqfqqqsfcq');
$data[] = $newdata;
file_put_contents($file, json_encode($data));
echo OK
?>
编辑 - Cezary的答案几乎提供了我的需要,但却没有。这是我得到的:
{
&#34; status&#34;:true,
&#34;数据&#34;:{
"clics": [ { "id": "1", "title": "Title 1", "comment": "Blablabla 1", "url": "http://photostodisplay/1.jpg" }, { "id": "2", "Title": "Title 2", "comment": "Blablabla 2", "url": "http://photostodisplay/2.jpg" } ]
},
&#34; 0&#34;:{
"id": "11", "title": "sfdfsdfqf", "comment": "sfdfwwfwdsdfqf", "url": "sdfqwsfsdqqfqqqsfcq"
}
}
答案 0 :(得分:4)
问题在于这段代码:
$data = json_decode(file_get_contents($file));
这将返回一个对象,而不是一个关联数组。将该行更改为:
$data = json_decode(file_get_contents($file), true);
json_decode中的第二个参数指定是否需要关联数组,默认为false
。
修改强>
您目前正在向根阵列添加内容。要添加到clics
数组,您可以将$data[] = $newdata;
替换为:
$data['data']['clics'][] = $newdata;
答案 1 :(得分:-1)
不应该
$data["data"]["clics"][]=$newdata;
或
array_push($data["data"]["clics"],$newdata);