提问者:小点点

PHP unset()似乎无法正常工作


我有一个多维数组$_session['cart'],它存储项目的详细信息。 我从数组中删除项目,使用ajax将特定项目的id传递给PHP,并且我已经两次检查了该id总是准时到达。

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个答案

匿名用户

已解决:这是一个问题,由于“添加项目”过程。 我不知道为什么,但是当我向购物车中添加新项时,我必须使用array_values()重新索引数组$_session['cart'];

$_session['cart']=数组值($_session['cart']);

在“添加项”过程中,我在添加项代码之前或之后重新索引它并不重要。