setcookie()期望参数2为字符串,数组是什么问题?

时间:2019-01-19 14:37:44

标签: php cookies isset setcookie

出什么问题了?

while($rov = mysql_fetch_array($result)) {
    $expire = time()+(60*60*24*30);
    setcookie('cookie',$rov,$expire);
    $userID = $rov;
}

if(isset($_COOKIE['cookie'])) {
    $userID = $_COOKIE['ID'];
}

if(isset($_COOKIE['cookie'])) {}

错误消息:

  

警告:setcookie()期望参数2为字符串,在第24行的/index.php中给出的数组

2 个答案:

答案 0 :(得分:3)

您收到警告

  

警告:setcookie()期望参数2为字符串,数组为   /index.php,第24行

因为PHP的setcookie()函数接受 string 作为第二个参数。因此,如果要存储任何数组值,例如$rov,则可以使用json_encode($rev);设置cookie,要访问它,可以使用json_decode($_COOKIE['cookie'],1);

这是使用json_encode()json_decode()

Array 值设置和获取Cookie的方法

设置Cookie

setcookie('cookie', json_encode($rov), time()+3600);

获取Cookie

$data = json_decode($_COOKIE['cookie'], true);

答案 1 :(得分:0)

setCookie()希望将字符串作为值,但 $ rov 变量包含导致错误的数组。

您可以使用@Curious_mind建议的 json_encode / json_decode 解决方案,也可以采用 serialize / unserialize 方法。

setcookie('cookie', serialize($rov), time()+3600);

Then unserialize data:

$data = unserialize($_COOKIE['cookie'], ["allowed_classes" => false]);