如何阻止会话变为负值?

时间:2013-10-04 06:31:29

标签: php session

在此代码删除案例中执行比会话更多和更多时间获取负值。在会话获取仅正值的代码中发生了哪种类型的更改。

 <?php
    session_start();
    $d1=$_POST['d1'];
    $action=$_POST['str1'];
    $product_id = $_POST['productid'];
    switch($action) 
    { 
    case "Add":
        $_SESSION['cart'][$product_id] = $d1 + (isset($_SESSION['cart'][$product_id]) ?$_SESSION['cart'][$product_id] : 0);
    break;
        case "Remove":
    $_SESSION['cart'][$product_id]=(isset($_SESSION['cart'][$product_id]) ? $_SESSION['cart'][$product_id] : 0)- $d1;
            if($_SESSION['cart'][$product_id] == 0)
            unset($_SESSION['cart'][$product_id]); 
            break;
     }
    ?>

2 个答案:

答案 0 :(得分:0)

如果是“删除”:部分。

首先计算项目列表并放置if else检查是否计数&gt; 0然后执行删除操作

跳过删除。

答案 1 :(得分:0)

使用<=代替==以避免负值

if($_SESSION['cart'][$product_id] <= 0)

此外,您还错过了“添加”案例中的break;声明