удалить последнюю сессию идентификатора - PullRequest
0 голосов
/ 15 апреля 2019

На моей странице у меня есть флажок, пользователь может выбрать checbox и перейти на страницу сравнения. Для этого я использую сеанс, сохраните выбранный флажок id.

Пользователь может вернуться на страницу, где он находитсяснова установите флажок и выберите другое.

Проблема с этим выбором, у нас могут быть одинаковые продукты id, выбранные во время сеанса.

ex first action

id = 1
id = 2
id = 3

goна выбранную страницу сравнения

второе действие

id = 2
id = 4
id = 5

третье действие

id = 2
id = 4
id = 6

Для удаления идентификатора я использую этот код:

  $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 идентификаторы удалены, но идентификатор не дублирован.

Моя проблема в том, что существует только один продукт с 3 или 4 одинаковыми дублирующимися идентификаторами.Я должен нажать на кнопку «Удалить» 4 раза, чтобы удалить продукты.

Как обновить цикл, чтобы удалить все одинаковые идентификаторы за один раз?

Спасибо.

пример $_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 голосов
/ 15 апреля 2019

Если вы хотите удалить повторяющиеся значения в массиве, попробуйте использовать метод array_unique.

также $_POST['products_id'] может возвращать массив идентификаторов продуктов.

Если это так, то $value == $products_id не будет работать, и вам придется заменить его на in_array($value,$products_id).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...