PHP使用unset从数组中删除$i。我的数组中有一个洞,可以';我修不好
我的这段代码使用PHP使用unset从数组中删除$i。我的数组中有一个洞,可以';我修不好,php,arrays,forms,unset,array-splice,Php,Arrays,Forms,Unset,Array Splice,我的这段代码使用$i的值从数组中删除该项$i=0当它启动时,以及当删除$i=2时,无法再次删除替换它的值。我知道这是因为我使用unset函数在数组中有一个洞 在我的表单中,我将值设置为$I 然后使用以下命令处理表单: if (isset($_POST['index_to_remove']) && $_POST['index_to_remove'] != "") { $key_to_remove = $_POST['index_to_remove']; if (c
$i
的值从数组中删除该项<代码>$i=0当它启动时,以及当删除$i=2
时,无法再次删除替换它的值。我知道这是因为我使用unset函数在数组中有一个洞
在我的表单中,我将值设置为$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));
}
}
我不知道要添加什么,但我认为我需要使用array_splice,这样当用户删除一个项目,然后再次尝试删除同一项目时,它将始终删除。请帮助。我们遇到了一个非常类似的问题!尝试使用数组_值重置索引:
array_值(未设置($_会话[“购物车数组”][“$key_to_remove”])代码>无需重新排序任何内容;创建表单元素时只需使用索引:
foreach ($_SESSION['cart_array'] as $index => $value) {
// ...
printf(
'<input type="hidden" name="index_to_remove " value="%d" />',
$index
);
// ...
}
要添加项目,请执行以下操作:
$_SESSION['cart_array'][] = ...;
删除unset()
并改为使用array\u拼接($\u SESSION['cart\u array'],$key\u to\u remove,1)
是否尝试删除“
s?我不认为这是问题所在,但绝对不需要它们。@EugenRieck只是好奇,如果我从1开始数组,并指定$I=1怎么办?我必须把号码改成0吗????它与$i=0完美配合,非常感谢!我强烈建议不要在PHP中使用基于1的数组-基本上所有用于整数索引的函数都假定为零基数。我心里有一个洞,我无法修复它…(忍不住)我遇到了一个错误:解析错误:语法错误,意外的“unset”(t_unset),期望“这不起作用”unset()
不返回值。这与array_values()基本相同代码>
if (array_key_exists($key_to_remove, $_SESSION['cart_array'])) {
unset($_SESSION['cart_array'][$key_to_remove];
}
$_SESSION['cart_array'][] = ...;