次のようにショッピングカートに追加しています。
function addItem($id, $qty="1"){
if (($this->isInCart($id)) == false){
$this->cart[] = array( 'id' => $id, 'qty' => $qty);
} else{
$this->cart[$id]['qty']++;
}
}
アイテムが既にカートに入っている場合、メソッドに現在の $id を 1 ずつ増やすように指示するだけですが、これらの呼び出しでは機能しないようです。
$basket->addItem('monkey','200');
$basket->addItem('dog', '10');
$basket->addItem('dog');
犬のアイテムを 2 回目に追加すると、次の関数はバスケットに 10 匹の犬しか報告しません。
function numberOfProduct($id){
unset($number);
foreach($this->cart as $n ){
if ($n['id'] == $id){
$number = $number + $n['qty'];
}
}
return $number;
}
addToBasket メソッドで配列をインクリメントすることに問題があると確信していますが、手続き型コーディングでまったく同じメソッドを使用すると、問題なく動作します。
私は本当に立ち往生しています。
編集:リクエストされたカートメソッドにあります
function isInCart($id){
$inCart=false;
$itemsInCart=count($this->cart);
if ($itemsInCart > 0){
foreach($this->cart as $cart){
if ($cart['id']==$id){
return $inCart=true;
break;
}
}
}
return $inCart;
}