删除上一个ID会话

时间:2019-04-15 16:43:54

标签: php session

在我的页面上,我有一个复选框,用户可以选择复选框,然后在比较页面中进行搜索 为此,我使用会话保存选中的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" }

1 个答案:

答案 0 :(得分:0)

如果要删除数组中的重复值,请尝试使用array_unique方法。

另外,$_POST['products_id']可能返回一个产品ID数组。

如果是这种情况,那么$value == $products_id将无法正常工作,而您必须将其替换为in_array($value,$products_id)