[英]Php add to shopping cart problem
我试图创建一个将商品添加到购物车的php函数。 我想要它做的是检查数组,以查看该项目是否已经在其中,是否增加了数量,如果没有在购物车中创建该项目。
相反,它正在做的是添加一个项目,它将在第一次运行(如果已经存在的项目只会增加数量),但是如果添加另一个项目,它将继续在购物中创建该项目的新实例购物车
项目1-数量4项目2-数量1项目2-数量1项目2-数量1 ...依此类推...
下面是我到目前为止的代码?
function add_item ($id, $qty)
{
$count=$this->countItems;
echo "uytfdgghjkl;kj<br>";
$added = false;
if($count>0)
{
$i=0;
while($added == false)
{
echo "fghjkl<br>";
$tid = $this->items[$i]->getId();
echo "new ID: ".$tid."<br>";
echo "old ID: ".$id."<br>";
echo $i;
if($tid == $id)
{
$amount = $this->items[$i]->getQty();
$this->items[$i]->setQty($amount+1);
$added = true;
//$i++;
//break;
}
if($added == true)
{
break;
}
else //if($added == false)
{
$this->items[$this->countItems] = new OrderItem($id, $qty);
//$this->total = $total+ ($qty *$price);
$this->countItems++;
$added = true;
//break;
}
//else break;
$i++;
}
}
else
{
$this->items[$this->countItems] = new OrderItem($id, $qty);
//$this->total = $total+ ($qty *$price);
$this->countItems++;
}
}
问题在于您不是先搜索整个数组以查看其中是否存在该项。 下面的代码应该可以工作,但是我可能输入了错字或其他错误,因此请确保仔细检查。
function add_item ($id, $qty)
{
$count=$this->countItems;
echo "uytfdgghjkl;kj<br>";
$added = false;
if($count>0)
{
for($i=0; $i < $count; $i++)
{
echo "fghjkl<br>";
$tid = $this->items[$i]->getId();
echo "new ID: ".$tid."<br>";
echo "old ID: ".$id."<br>";
echo $i;
if($tid == $id)
{
$amount = $this->items[$i]->getQty();
$this->items[$i]->setQty($amount+1);
$added = true;
break;
}
}
}
if(!$added)
{
$this->items[$this->countItems] = new OrderItem($id, $qty);
//$this->total = $total+ ($qty *$price);
$this->countItems++;
}
}
更好的选择是使用字典
即。
$arr = array();
$arr['item_id'] = new OrderItem(...);
然后,您可以使用以下命令检查项目是否在数组中:
if(isset($arr[$id])){
...
}
逻辑有缺陷。 仅当碰巧是购物车中的第一件物品时,该代码才会增加该物品的数量。 否则,它将添加该项目。 在这里证明:
if($added == true) // if this cart item's quantity was incremented
{
break;
}
else // add item
{
$this->items[$this->countItems] = new OrderItem($id, $qty);
// etc...
}
相反,你应该删除new OrderItem($id, $qty)
从循环和检查的价值$added
通过所有的车项目后循环。 对于这个工作,你需要通过循环for
使用(而不是同时) $count
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.