我将在下面准确解释正在发生的事情。关于修复的任何想法都将非常感谢。
请参阅下面的PHP数组。
$myArray = array( 145 => true, 134 => true, 152 => true);
然后我的阵列被var转储了。
array(3) { [145]=> bool(true), [134]=> bool(true), [152]=> bool(true) }
然后我对数组进行json编码。
$myJson = json_encode($myArray);
我编码的json var转储结果是..
string(34) "{"145":true,"134":true,"152":true}"
然后我使用这样的json字符串设置cookie。.
setcookie('mycookie', $myJson);
然后这是设置后的cookie内容。
%7B%22145%22%3Atrue%2C%22134%22%3Atrue%2C%22152%22%3Atrue%7D
确定是从哪里开始的问题
然后我使用它来获取cookie内容。
$myCookie = $_COOKIE['mycookie'];
这是$myCookie
的var转储。
string(40) "{\"131\":true,\"134\":true,\"152\":true}"
如您所见,这与我在cookie中设置的字符串不同。现在有反斜杠,例如它被逃脱了。为什么会这样?
如果我现在尝试解码json,它将返回NULL
。
有人能理解为什么会这样吗?我当然不必用字符串替换这些反斜杠吗?我要做的就是解码json。我原始的编码字符串可以很好地解码,就在将其添加到Cookie时,它会破坏我的json。