我使用serialize/unserialize函数将数据存储在cookie中。当我向数组中添加新项时,取消序列化函数不起作用。
代码
$storedArr = array();
if(isset($_REQUEST['sendProductId'])){
$newItem = $_REQUEST['sendProductId'];
$storedArr[] = $_COOKIE['productID'];
array_push($storedArr, $newItem);
$cookie_name = 'productID';
setcookie($cookie_name, serialize($storedArr), time() + (86400 * 30));
}
$cookieData = $_COOKIE['productID'];
$data = unserialize($cookieData);
print_r($data);
对单个数组索引的响应
Array ( [0] => [1] => 50 )
向数组添加新项时的响应
Array ( [0] => a:2:{i:0;N;i:1;s:2:"50";} [1] => 50 )
请指引我哪里错了。感谢
我在代码中看到了逻辑问题,当你在序列化cookie时从cookie中获取数据时,你必须首先取消序列化,然后使用
$storedArr[] = $_COOKIE['productID'];
更改为
$storedArr = !empty($_COOKIE['productID']) ? unserialize( $_COOKIE['productID'] ):array();
它应该能解决你的问题。