2014-07-21 39 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