Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在PHP中修改JSON文件_Php_Json - Fatal编程技术网

无法在PHP中修改JSON文件

无法在PHP中修改JSON文件,php,json,Php,Json,这是我的json.json文件内容 { "Title": "Hello World", "Inputs": [ { "Id": "1", "Title": "One" }, { "Id": "15", "Title": "Fifteen" }

这是我的json.json文件内容

{
    "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循环,但这似乎是一个更简单的解决方案