Php JSON字符串表示为0

Php JSON字符串表示为0,php,json,Php,Json,所有内容都被保存到JSON文件中,没有任何问题(如set\u friendreq,因为它是一个数字),但当我尝试发送字符串时,JSON文件中会出现一个“0”(set\u displayname)。为什么? JSON文件: if (isset($_SESSION['user'])) { $plik = 'users/'.$_SESSION['user'].'/settings.json'; $file = fopen($plik, "a+"); @fclose($plik);

所有内容都被保存到JSON文件中,没有任何问题(如
set\u friendreq
,因为它是一个数字),但当我尝试发送字符串时,JSON文件中会出现一个“0”(
set\u displayname
)。为什么?

JSON文件:

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

对于set_friendreq,它是0,因为类型是整数,所以在字符串代码中初始化它们

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

$\u POST-它是数组字符串,在u中尝试使用json\u解码,见“0”。因为它是字符串而不是整数。变量类型有问题。

对于set\U friendreq,它是0,因为类型是整数,所以在字符串代码中初始化它们

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

$\u POST-它是数组字符串,在u中尝试使用json\u解码,见“0”。因为它是字符串而不是整数。变量类型有问题。

您的fopen和fclose有什么意义?您的文件处理程序未被使用,fclose应该接收一个文件处理程序,而不是文件名。我假设您只是将其设置为忽略错误,而不是侦听fclose错误。您是否尝试打印出$\u POST以查看
dsp
包含的内容?问题不在于json/文件处理。您的fopen和fclose有什么意义?您的文件处理程序未被使用,fclose应该接收一个文件处理程序,而不是文件名。我假设您只是将其设置为忽略错误,而不是侦听fclose错误。您是否尝试打印出$\u POST以查看
dsp
包含的内容?问题不在于json/文件处理。是或更改此字符串$data[“set_displayname”]=$\u POST['dsp'];至$data[“set_displayname”]=(int)$\u POST['dsp'];这不是OP所要求的,他发送的是一个字符串,而不是一个整数;else$data[“set_friendreq”]=0;这不是文本。OP询问的是displayname而不是friendreq,请重新阅读该问题。是或更改此字符串$data[“set_displayname”]=$\u POST['dsp'];至$data[“set_displayname”]=(int)$\u POST['dsp'];这不是OP所要求的,他发送的是一个字符串,而不是一个整数;else$data[“set_friendreq”]=0;这不是文本。OP询问的是displayname而不是friendreq,请重新阅读问题。