我有这样一个数组:
Array
(
[fruit] => Banana
[country] => Canada
)
如何使用包含这些新数据的循环更新我的json文件?
我的json是一个文件,看起来很简单:
{"fruit" : "Cherry", "country" : "Mexico", "weight" : "28"}
注意:我想更新值fruit和country,而不是所有json。
感谢。
答案 0 :(得分:1)
正如我所说,您可以将json解码为关联数组(注意json_decode()
使用true
上的第二个参数集),循环抛出它并在迭代时更新它。最后再次编码为json,如下所示
$array = array('fruit' => 'Banana', 'country' => 'Canada');
$json = '{"fruit" : "Cherry", "country" : "Mexico", "weight" : "28"}';
$mjson = json_decode($json,true);
foreach($array as $key => $val) {
if(isset($mjson[$key])) {
$mjson[$key] = $val;
}
}
$jjson = json_encode($mjson);
print_r($jjson);
//Output: {"fruit":"Banana","country":"Canada","weight":"28"}
答案 1 :(得分:0)
$input = /** some json string **/
$json = json_decode($input, true); // to assoc array
// update values
$json["fruit"] = "Cherry";
$json["country"] = "Mexico";
$json["weight"] = "28";
$ouput = json_encode($json); // back to json
// save to file etc.
这有帮助吗?
答案 2 :(得分:0)
您无法直接编辑文件,就像它是一个对象一样。 首先你需要读取文件,而不是解码json:
e.g:
$string='{"name":"John Adams"}';
$json_a=json_decode($string,true);
请记住,如果您使用第二个参数" true"在json_a中,您将获得关联数组。像这样:
$json_a=array("name"=>"John Adams");
但是如果你想让对象不设置第二个参数:
$string='{"name":"John Adams"}';
$json_o=json_decode($string);
这里json_decode($ string)返回一个对象。现在你可以这样做:
echo $json_o->name;
修改json对象时,请将其写回文件。