2016-03-06 120 views
1
if (isset($_SESSION['user'])) { 

    $plik = 'users/'.$_SESSION['user'].'/settings.json'; 

    $file = fopen($plik, "a+"); 
    @fclose($plik); 

    $jsonString = file_get_contents($plik); 
    $data = json_decode($jsonString, true); 
    if ((isset ($_POST['s_pm'])) && $_POST['s_pm']=="on") 
     $data["set_friendreq"] = 1; else $data["set_friendreq"] = 0; 
    if (isset($_POST['dsp'])) 
     $data["set_displayname"] = $_POST['dsp']; 

    $newJsonString = json_encode($data); 
    file_put_contents($plik, $newJsonString); 
} 

所有內容保存到JSON文件沒有任何問題(如set_friendreq因爲它是一個數字),但是當我嘗試發送一個字符串,一個出現的「0」在我的JSON文件(set_displayname)。爲什麼?JSON字符串表示爲0

JSON文件:

{"set_friendreq":0,"set_displayname":"0","lang":"2"} 
+0

你的fopen和fclose有什麼意義?您的文件處理程序不使用,fclose應該接收文件處理程序,而不是文件名。不要聽fclose錯誤,我認爲你只是將它設置爲忽略錯誤。 – Devon

+0

您是否嘗試打印出$ _POST來查看'dsp'包含的內容?問題不在於json /文件處理。 – Devon

回答

0

對於set_friendreq是0,因爲類型是整數,u初始化它們串碼。

$data["set_friendreq"] = 1; else $data["set_friendreq"] = 0; 

$ _POST - 它是數組字符串,並在你嘗試使用json_decode你看到「0」。因爲它是字符串不是整數。你有變量類型的問題。

+0

是或更改此字符串$ data [「set_displayname」] = $ _POST ['dsp'];到$ data [「set_displayname」] =(int)$ _ POST ['dsp']; –

+0

這不是OP要求的,他是發送一個字符串,而不是一個整數。 – Devon

+0

尋找代碼man,$ data [「set_friendreq」] = 1; else $ data [「set_friendreq」] = 0;這不是TEXT。 –