购物车:删除作为应该

问题描述:

我有一些问题,不能正常工作“删除”我的购物车脚本(是开关的情况下)购物车:删除作为应该

case 'delete': 
     if ($cart) { 
      $items = explode(',',$cart); 
      $newcart = ''; 
      foreach ($items as $item) { 
       if ($_GET['id'] != $item) { 
        if ($newcart != '') { 
         $newcart .= ','.$item; 
        } else { 
         $newcart = $item; 
        } 
       } 
      } 
      $cart = $newcart; 
      $_SESSION['cart'] = $cart; 
     } 
     break; 

示例:$ _SESSION [ 'cart'] = 1,2,1; 问题是,当客户购买两倍相同的物品时,它会同时删除。我该如何解决它?

+0

你能澄清一下究竟* *出了问题在哪里呢? – 2012-02-18 22:35:15

+0

我把它放在下面:它删除时,它删除所有具有相同ID的项目(如果客户买了两次相同的东西,它删除两次) – chenci 2012-02-18 22:39:33

您需要设置一个标志,是这样的:

$items = explode(',',$cart); 
     $newcart = ''; 
     $flag = false; 
     foreach ($items as $item) { 
      if ($_GET['id'] == $item && $flag === false) { $flag = true; continue; } 


       if ($newcart != '') { 
        $newcart .= ','.$item; 
       } else { 
        $newcart = $item; 
       } 

     } 
$cart = $newcart; 

这个文档片断可以帮助:

$items = explode(',',$cart); 
$newcart = array(); 
$deleted = false; 
foreach ($items as $item) { 
    if (!$deleted && $_GET['id'] == $item) { 
    $deleted = true; 
    continue; 
    } 
    $newcart[] = $item; 
} 
print_r(implode(',',$newcart)); 
+0

是的!像魅力一样工作。非常感谢,我看到以这种方式构建新购物车的效果更好。 – chenci 2012-02-18 22:50:41