PHP JSON文件内容为空

PHP JSON文件内容为空,php,json,Php,Json,这是我当前的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_enco

这是我当前的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\u put\u contents
写入的文件总是以空白结束。关于为什么会这样,有什么建议吗

编辑:

这是
$data
返回的内容:

Array ( [coins] => 100 [uses] => 1 )
在稍微修改代码后,似乎
文件\u put\u内容
返回
false
。尽管如此,我已将文件权限设置为777
test.json
)。

无需
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()
更多地用于转换字符串编码。

调用
文件的返回值是什么<代码>真
?我假设
false
,这在大多数情况下会导致系统为运行PHP的用户授予的写入权限不足。可能您缺少对目标文件/目标的写入权限?@TiMESPLiNTER:权限不足不能成为问题的根源,因为文件已打开,之前的内容被删除。@不,您是对的,因为iconv的用法错误$由于错误使用“iconv”,数据可能包含null。json结构可能格式错误,json_encode可能返回null。null可以在php中计算为空字符串,因此文件\u put\u内容可能会以零覆盖整个内容,因为如果缺少参数标志,则不会设置文件\u APPEND标志
$data
包含数据和
文件内容
返回false,这肯定是权限问题。请检查php用户是否有该文件的写入权限。我刚从其他友好人士那里学到:)“这并没有提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。“是的,该评论完全展示了我的php知识;)你说得对:)