会话数组取消设置并删除行

Session array unset and delete row

我得到一个产品的 ID 并尝试从我的会话中删除 array.I 使用 unset 并且一切顺利但是当我尝试在循环中显示数据时会话仍然有删除的行所以我得到错误未定义的偏移量:0。 我使用第二个会话,它只有第一个的计数,所以当我删除一行时,它工作 fine.However 当我尝试对多维会话进行相同操作时($_SESSION['cart'] = $_SESSION['cart'] -1;) 它不起作用,我收到错误消息 Unsupported operand types..

所以总而言之,我需要从会话数组中删除一个特定的数据,当我使用 unset 时,它确实删除了它,但是如果我有 3 个产品,我删除了第二个,那么数组仍然有所有的索引。显示它们数组仍然有索引 0,1,2..

这是我的代码

$cart = $_SESSION['cart'];
$c=$_SESSION['c'];

$id=$_GET['id'];


unset($_SESSION['c'][$id]);
unset($_SESSION['cart'][$id]);


$_SESSION['c'] = $_SESSION['c'] -1;
$_SESSION['cart'] = $_SESSION['cart'] -1;

替换

$_SESSION['c'] = $_SESSION['c'] -1; 

来自

$_SESSION['c'] = array_values($_SESSION['c']);

"-1" 将引发错误,因为您正试图从 N 维数组中减去数值。 array_values return 您会在 unset/delete 操作完成后更新 $_SESSION['c']。

P.S。也相应地为 $_SESSION['cart'] 更新您的代码。