这是我当前的JSON文件:
{"coins":"0","uses":"0"}
...我用以下PHP重写了这些值:
$data = json_decode(file_get_contents('test.json'), true);
$data["coins"] = iconv($data["coins"] + $coins);
$data["uses"] = iconv($data["uses"] + 1);
file_put_contents('test.json', json_encode($data));
我已打印出$data
的值,并看到它包含新值。然而,file_put_contents
写入的文件总是空白。有关为何如此的任何建议?
修改
这是$data
返回的内容:
Array ( [coins] => 100 [uses] => 1 )
稍微更改我的代码后,似乎file_put_contents
返回false
。不过,我已将文件权限设置为 777 (test.json
)。
答案 0 :(得分:0)
以下iconv()
不需要执行以下操作:
$data["coins"] = $data["coins"] + $coins;
$data["uses"] =$data["uses"] + 1;
如果转储对象,您将看到:
array(2) { ["coins"]=> string(1) "0" ["uses"]=> string(1) "0" }
它们是字符串,因为在你的json中,数字都有引号。
如果您可以投射(int)$data["coins"]
,但幸运的是,php足够智能,可以转换为正确的数据类型。
iconv()
更多用于转换字符串编码。