PHP unset () работает некорректно - PullRequest
0 голосов
/ 21 июня 2020

У меня есть многомерный массив $ _SESSION ['cart'], в котором хранятся детали товаров. Я удаляю элементы из массива, передавая PHP указанный c идентификатор элемента, используя ajax, и я дважды проверил, что идентификатор всегда приходит вовремя.

if ($_GET['action'] == 'delCartItem') {

//delete the item from the array
 $_SESSION['totItmes'] =0;
 $e=0; 
  
if ($_POST['uid']){

    foreach($_SESSION['cart']as &$arr){
         $_SESSION['totItmes'] = $_SESSION['totItmes'] +$arr['quantity'];
             
     
      
               if($arr['id']==$_POST['uid']){

                $testArriveId= $arr['id']."hello".$_POST['uid'];
                 
                  $before= count($_SESSION['cart']);
//**********************************************************************
                  unset($_SESSION['cart'][$e]);
//**********************************************************************
                 if(count($_SESSION['cart'])<$before){
                  $_SESSION['totItmes'] = $_SESSION['totItmes'] -$arr['quantity'];
                 } 
                       
               }
                $e++;
  
            }
 $_SESSION['cart']= array_values($_SESSION['cart']);

...

ПРОБЛЕМА: этот код отлично работает для первый элемент, который я удаляю из корзины после начала сеанса. Затем мне нужно дважды щелкнуть удалить и реализовать весь код, и я не понимаю, почему. Есть идеи?

1 Ответ

0 голосов
/ 21 июня 2020

РЕШЕНО: Это была проблема из-за процедуры «Добавить элементы». Не знаю почему, но мне пришлось переиндексировать массив $ _SESSION ['cart'], используя array_values ​​() ТАКЖЕ, когда я добавляю новый элемент в корзину;

$_SESSION['cart']= array_values($_SESSION['cart']);

В процедуре «Добавить элемент» не имеет значения, переиндексирую я его до или после добавления кода элемента.

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