我的这段代码使用 的值从数组中删除项目$i
。$i=0;
当它开始时,当$i=2
被删除时,替换它的值不能被再次删除。我知道这是因为我的数组中有一个使用unset函数的洞。
在我的表单中,我将值设置为$i
.
<input name='index_to_remove' type='hidden' value='" . $i . "' />
然后用这个处理表单:
if (isset($_POST['index_to_remove']) && $_POST['index_to_remove'] != "") {
$key_to_remove = $_POST['index_to_remove'];
if (count($_SESSION["cart_array"]) <= 1) {
unset($_SESSION["cart_array"]);
header("location: cart.php");
} else {
unset($_SESSION["cart_array"]["$key_to_remove"]);
//sort($_SESSION["cart_array"]);
//$_SESSION["cart_array"] = array_values($_SESSION["cart_array"]);
//array_splice($_SESSION['cart_array'], $i, 1, array($_SESSION['cart_array']['key_to_remove'] + 1));
}
}
注释掉的行是我尝试过的东西,但都失败了。我已将其缩小为:索引被删除然后完全消失,因此无法再次删除替换未设置数组项的新值。
我相信我的阵列上有一个洞,因为
unset($_SESSION["cart_array"]["$key_to_remove"]);
我不知道要添加什么,但我认为我需要使用 array_splice 所以当用户删除一个项目,然后尝试再次删除同一个项目时,它总是会删除。请帮忙。