无法在购物车中删除带有会话数组的项目

时间:2015-06-05 02:57:50

标签: php session

我有一个购物车的会话数组,但问题是当我尝试使用UNSET命令删除所选项时,它似乎无法正常工作。有人请帮帮我。我想根据产品ID和尺寸删除商品,因为我的购物车中的其他商品可能具有不同尺寸的相同商品ID。这是我的代码:

我的购物车会话结构:

$_SESSION['cart_items'][$id.'-'.$size] = array('id'=> $id,'code' => $code, 'Quantity' => $quantity, 'Size' => $size);

编码删除项目:

    $size = $_GET['Product_Size'];
$id = $_GET['Product_ID'];

echo $id.$size;

if(!isset($_SESSION['cart_items'])){
    echo "<script type='text/javascript'>alert('Shopping list is empty!');
        window.history.back();</script>";   
}

if (isset($_SESSION['cart_items'])) {
    //print_r($_SESSION['cart_items']);
    foreach ($_SESSION['cart_items'] as $key => $value) {
    if ($key == $id.'-'.$size) {
        unset($_SESSION['cart_items'][$key]);
    //print_r($_SESSION['cart_items']);
        echo "<script type='text/javascript'>alert('Successful remove!');
        window.history.back();</script>";   
        break;  
                                                         }
    else
        {
        echo "<script type='text/javascript'>alert('Not found!');
        window.history.back();</script>";     
        }    
                                                        }

}

1 个答案:

答案 0 :(得分:1)

foreach循环语法中,您犯了一个逻辑错误,$_SESSION['cart_items']的内容是一个包含一些键和值的数组,键位于$id-$size格式,值是包含更多信息的数组。所以&#34;键&#34;你应该检查,改变你的代码如下:

foreach ($_SESSION['cart_items'] as $key => $value) {
    if ($key == $id.'-'.$size) {
        unset($_SESSION['cart_items'][$key]);
        // ... (the rest of the code)