2012-02-18 25 views
0

我有一些問題,不能正常工作「刪除」我的購物車腳本(是開關的情況下)購物車:刪除作爲應該

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

回答

1

您需要設置一個標誌,是這樣的:

$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; 
1

這個文檔片斷可以幫助:

$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