在我的页面上,我有一个复选框,用户可以选择复选框,然后在比较页面中进行搜索 为此,我使用会话保存选中的ID复选框。
用户可以在页面上再次出现复选框时返回并选择其他。
此选择存在问题,我们可以在一个会话下选择相同的id产品。
ex 第一步
id = 1
id = 2
id = 3
转到选定的比较页面
第二步
id = 2
id = 4
id = 5
第三次行动
id = 2
id = 4
id = 6
要删除ID,请使用以下代码:
$products_id = HTML::sanitize($_POST['products_id']);
if (is_array($_SESSION['productsCompare']) && isset($products_id)) {
$remove_array = $_SESSION['productsCompare'];
$i = 0;
foreach ($remove_array as $value) {
if ($value == $products_id) {
unset($_SESSION['productsCompare'][$i]);
}
$i++;
}
if (count($remove_array) == 1) {
unset($_SESSION['productsCompare']);
}
}
如您所见,如果$value == $products_id
id已删除,但没有重复的ID。
我的问题是,只有一种产品具有3或4个相同的重复ID。 我必须单击删除按钮4次才能删除产品。
如何对循环进行审核以仅一次删除所有相同的id?
谢谢。
$_SESSION['productsCompare']
重复的示例
array(11) { [0]=> string(2) "14" [1]=> string(2) "14" [2]=> string(2) "14" [3]=> string(2) "14" [4]=> string(2) "13" [5]=> string(2) "13" [6]=> string(2) "14" [7]=> string(2) "13" [8]=> string(2) "14" [9]=> string(2) "13" [10]=> string(2) "11" }
答案 0 :(得分:0)
如果要删除数组中的重复值,请尝试使用array_unique
方法。
另外,$_POST['products_id']
可能返回一个产品ID数组。
如果是这种情况,那么$value == $products_id
将无法正常工作,而您必须将其替换为in_array($value,$products_id)
。