2014-07-21 38 views
3

这是我当前的JSON文件:PHP JSON file_put_contents空白

{"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。不过,我已将文件权限设置为(test.json)。

+1

调用'file_put_contents()'调用的返回值是什么? 'true'还是'false'?我假设“错误”,这在大多数情况下导致系统为正在运行PHP的用户授予的写权限不足。 – TiMESPLiNTER

+0

可能您缺少对目标文件/目标的写入权限? – Steini

+0

@TiMESPLiNTER:由于文件已打开,且以前的内容已被删除,因此权限不足无法成为问题的根源。 – mcserep

回答

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

+0

我刚刚从其他好人那里了解到这一点:)“这并不能解答问题,要批评或要求作者澄清,请在他们的帖子下留言。” – mcserep

+0

@CMate请在批评之前学习php – meda

+0

是的,该评论完全展现了我的PHP知识;)你是对的:) – mcserep