Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP cookie数组可以处理整数,但不能处理字符串_Php_Cookies - Fatal编程技术网

PHP cookie数组可以处理整数,但不能处理字符串

PHP cookie数组可以处理整数,但不能处理字符串,php,cookies,Php,Cookies,这段代码正确地创建了一个cookie,然后返回一个数组 $exampleString1 = 123; $exampleString2 = 456; $exampleStringArray = array(); $exampleStringArray[] = $exampleString1; $exampleStringArray[] = $exampleString2; $exampleStringArrayEncoded = json_encode($exampleStringArray

这段代码正确地创建了一个cookie,然后返回一个数组

$exampleString1 = 123;
$exampleString2 = 456;

$exampleStringArray =  array();
$exampleStringArray[] = $exampleString1;
$exampleStringArray[] = $exampleString2;

$exampleStringArrayEncoded = json_encode($exampleStringArray);
setcookie('exampleCookie', $exampleStringArrayEncoded, time() + (86400 * 30), "/");


if(isset($_COOKIE['exampleCookie'])) {
    $exampleCookie = $_COOKIE['exampleCookie'];
    $exampleCookieDecoded = json_decode($exampleCookie);
    var_dump($exampleCookieDecoded);
}
但是,当数组包含字符串时,将第一行更改为:

$exampleString1 = 'abc';
$exampleString2 = 'def';
转储的值就是NULL

有人能解释为什么我不能在cookie中存储字符串吗

一旦设置了cookie,就可以在下一页上访问它们 使用$\u COOKIE数组加载


我需要在json_解码之前删除转义引号。我不知道为什么json_解码本身不这么做

$exampleCookie = stripslashes($_COOKIE['exampleCookie']);
$exampleCookieDecoded = json_decode($exampleCookie, true);

我刚刚在我的服务器上测试了你的代码,效果很好。我得到了相应的int和string作为结果。我同意Hans的观点,这段代码在我的服务器上运行得很好。您是否确定您已经分享了显示问题的确切测试用例?当然。我在下面回答了我自己的问题-它需要在json_decode()之前使用stripslashes(),现在可以完美地工作。我从另一个答案中偶然发现了这个建议,并惊讶地发现这个信息如此隐秘。我想,如果这是特定于我当地环境的某件事,那可能就是原因。在下一个页面加载时,这也不起作用。即使我在代码的其余部分之前进行var_转储($exampleCookiedecated)。它确实适用于整数,所以这不是问题所在。你在说什么转义引号?您共享的代码不应产生任何错误。老实说,我仍然在寻找一个现实生活中的解决方案,
stripslashes()
。事实上,这让人想起了过去的好时光,但该功能本身在很多年前就被删除了:-?我认为这是编码cookie中的转义字符。我对Cookie非常陌生,但在这里我没有做任何复杂的事情,这个解决方案立即奏效。