无法在PHP中修改JSON文件
这是我的json.json文件内容无法在PHP中修改JSON文件,php,json,Php,Json,这是我的json.json文件内容 { "Title": "Hello World", "Inputs": [ { "Id": "1", "Title": "One" }, { "Id": "15", "Title": "Fifteen" }
{
"Title": "Hello World",
"Inputs": [
{
"Id": "1",
"Title": "One"
},
{
"Id": "15",
"Title": "Fifteen"
}
]
}
我正试图将其修改如下:
$text = file_get_contents("json.json");
$json = json_decode($text,true);
foreach($json["Inputs"] as $input){
if($input["Id"]== "15"){
$input["Title"] = "This is from me.";
}
}
$new = json_encode($json);
file_put_contents('json.json', $new);
但是文件没有被更新
有什么想法吗?示例中的JSON格式不正确,但问题是您没有在原始数组中设置标题。更改传递给foreach循环的副本 将foreach循环更改为此,您的更改应显示:
foreach($json["Inputs"] as $key => $input){
if($input["Id"]== "15"){
$json["Inputs"][$key]["Title"] = "This is from me.";
}
}
foreach循环通过引用获取该值,因此更改$json['Inputs']将更改原始值,而更改$input将修改传递给循环的副本,而不会更改原始json数据。有很多方法可以通过引用传递到foreach循环,但这似乎是一个更简单的解决方案。示例中的JSON格式不正确,但问题是您没有在原始数组中设置标题。更改传递给foreach循环的副本 将foreach循环更改为此,您的更改应显示:
foreach($json["Inputs"] as $key => $input){
if($input["Id"]== "15"){
$json["Inputs"][$key]["Title"] = "This is from me.";
}
}
foreach循环通过引用获取该值,因此更改$json['Inputs']将更改原始值,而更改$input将修改传递给循环的副本,而不会更改原始json数据。有一些方法可以通过引用传递到foreach循环,但这似乎是一个更简单的解决方案