2014-07-21 3 views
3

이 내 현재 JSON 파일입니다PHP JSON은 빈 file_put_contents를

{"coins":"0","uses":"0"}  

... 그리고 나는 다음과 같은 PHP로 값을 다시 : 나는 $data의 값을 인쇄 한

$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)); 

새로운 값이 포함 된 것을 보았습니다. 그러나 file_put_contents에 쓰는 파일은 항상 공백이됩니다. 이것이 왜 그렇게에 대한 제안?

편집이 :

Array ([coins] => 100 [uses] => 1) 

조금 내 코드를 변경 한 후에는 file_put_contents 반환 false처럼 보인다 :

$data 반환 것입니다. 그럼에도 불구하고 파일 사용 권한을 (test.json)으로 설정했습니다.

+1

'file_put_contents()'호출의 반환 값은 무엇이라고 말합니까? 'true' 또는'false'? 필자는 대부분의 경우 PHP를 실행하는 사용자에게 시스템이 부여한 쓰기 권한이 충분하지 못하도록하는'false'라고 가정합니다. – 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