我使用以下代码在我的json中进行了修改:
$id = "hotel_name";
$value ="My Hotel";
$json = json_decode(file_get_contents('datas.json'));
$datas = $json->datas;
foreach ($datas as $category => $data) {
foreach ($data as $element) {
if($element->id==$id) {
$datas->$category->$element->$id = $value;
}
}
}
$newJson = json_encode($element);
file_put_contents('datas.json', $newJson);
但它没有把所有内容都放在其中。
请问如何解决?
我的json有以下内容:
{
"datas": {
"General": [
{
"field": "hotel_name",
"name": "My Hotel name"
}
]
}
}
答案 0 :(得分:0)
您正在访问$ element变量,该变量仅包含您最内层的数据
{
"field": "hotel_name",
"name": "My Hotel name"
}
如果您需要更多数据,则必须使用新更新的$ element变量重新分配最外层$ datas变量和子项。我建议创建一个空变量来存储新数据,而不是改变原始副本。
答案 1 :(得分:0)
您应该编码数据,而不仅仅是最后一个元素,对吗?
// before
$newJson = json_encode($element);
// after
$newJson = json_encode($datas);
顺便说一句,如果将数据转换为数组而不是对象,您可能会发现使用数据更容易。
$json = json_decode(file_get_contents('datas.json'), true);