无法使用php更新Cookie

时间:2018-06-24 00:39:11

标签: php cookies

我正在使用Cookie保存PHP数组(0 => 0、1 => 0,......,99 => 0),并且将数组编码为JSON,以便能够保存它在cookie中的问题是,当我解码JSON以检索数组并更改字段的值时,我无法更新cookie,而且我真的不知道为什么。

这是我用来创建cookie的代码:

$carrito=array(0=>0);
            $sql = "SELECT ID FROM productos";
            $ids = $conn->query($sql);
            if ($ids->num_rows > 0){
                while($row = $ids->fetch_assoc()) {
                    array_push($carrito, 0);
                }
            } else {
                echo "0 results";
            }
            $conn->close();//cerramos la conexión
            setcookie("carrito", json_encode($carrito), time()+(86400),"/");

这是我用来解码JSON并经过arrat修改的代码:

 if(isset($_POST["id"])){
            $idProducto=$_POST["id"];
            $data = json_decode(stripslashes($_COOKIE["carrito"]),true);
            print_r($data);
            echo "</br>".$idProducto."</br>";
            foreach($data as $id => $cantidad){
                if($id == $idProducto){
                    $cantidad++;
                }
            }
            print_r($data);
            setcookie("carrito", json_encode($data), time()+(86400),"/");
        }

问题是,当我尝试遍历数组时,对json进行解码后,无法将$ data行识别为$ id => $ cantidad。

这是我print_r($ data)时得到的:

Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0 [11] => 0 [12] => 0 [13] => 0 [14] => 0 [15] => 0 ) 

1 个答案:

答案 0 :(得分:0)

已通过使用以下方法解决了此问题:

$data[$idProducto]++;

代替foreach循环