我正在使用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 )
答案 0 :(得分:0)
已通过使用以下方法解决了此问题:
$data[$idProducto]++;
代替foreach循环