【问题标题】:php array cart problem?php数组购物车问题?
【发布时间】:2011-07-05 17:00:26
【问题描述】:

我有以下代码:

if($_SESSION['basket']){
    $i=0;
    while($i < count($_SESSION['basket'])) {    
        if(is_array($_SESSION['basket'][$i][$product['productid']]) && $_SESSION['basket'][$i][$product['productid']]['material']==$_POST['material'] && $_SESSION['basket'][$i][$product['productid']]['size']==$_POST['size']){
            $_SESSION['basket'][$i][$product['productid']]['qty']+=$_POST['qty'];
        }else{
            echo $i."-4";
            $_SESSION['basket'][][$product['productid']] = array("qty"=>$_POST['qty'], "material"=>$_POST['material'],"size"=>$_POST['size']);
        }
        $i++;
    }   
}else{
    $_SESSION['basket'][][$product['productid']] = array("qty"=>$_POST['qty'], "material"=>$_POST['material'],"size"=>$_POST['size']);
}

当我将商品添加到购物篮时,产品显示的数量为 2,而当我只添加 1 件时,有时还会添加额外的产品,有人可以帮我吗?

【问题讨论】:

  • 我会敦促您在执行操作时将巨大的变量名称值分配给更短、更具描述性的变量名称。这将使这一切变得容易得多。例如$prodID = &amp;$_SESSION['basket'][$i][$product['productid']]。现在您可以改为在 $prodID 上执行所有操作。
  • 嗨 Codemonkey,我完全同意你的看法,我打算在找出问题后这样做。谢谢
  • @Dino 你已经发布了 15 个问题。您应该学习如何正确格式化代码块,这样其他人就不必一直为您修复它们。永远不要使用&lt;code&gt;&lt;pre&gt; 标签。选择您的代码并单击工具栏中的{ } 按钮,或手动将每行缩进4 个空格。要编写code inline, like this,请将文本包装在`backticks` 中。请read this.

标签: php arrays shopping-cart


【解决方案1】:

我会仔细检查 $_SESSION['basket'][$i][$product['productid']]['qty'] 加上 $_POST['qty'] 是否等于您对初学者的期望值,回显它,确保它们是整数(如果您还没有的话)

然后试试

$_SESSION['basket'][$i][$product['productid']]['qty'] = $_SESSION['basket'][$i][$product['productid']]['qty'] + $_POST['qty'];

而不是使用+= 运算符。过去给我带来了麻烦。

或者您的count($_SESSION['basket']) 可能等于2,因此运行两次加法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    相关资源
    最近更新 更多