我有一个多维数组$_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']);
...
问题:对于会话开始后我从篮子中删除的第一个项目,这段代码可以很好地工作。 然后,它需要我点击删除并实现整个代码两次才能正常工作,我不明白为什么。 知道吗?
已解决:这是一个问题,由于“添加项目”过程。 我不知道为什么,但是当我向购物车中添加新项时,我必须使用array_values()重新索引数组$_session['cart'];
$_session['cart']=数组值($_session['cart']);
在“添加项”过程中,我在添加项代码之前或之后重新索引它并不重要。