unserialize()函数不能使用php

时间:2015-12-10 07:39:15

标签: php arrays serialization

我使用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 ) 

请指导我哪里错了。感谢

1 个答案:

答案 0 :(得分:1)

我在你的代码中看到逻辑问题,当你从cookie中获取数据时,你必须首先对它进行反序列化,然后使用

$storedArr[] = $_COOKIE['productID'];

更改为

$storedArr = !empty($_COOKIE['productID']) ? unserialize( $_COOKIE['productID'] ):array();

它应该可以解决你的问题。