Я борюсь со странной ситуацией с массивами в PHP.Я пытаюсь создать простую корзину, используя переменную сеанса.
Проблема:
Когда корзина пуста, программа создает новый продукт с переменными itemid
и qty
, когдатовар добавляется в корзину (по мере необходимости).То же самое происходит, когда добавляются другие новые продукты.
Он также может обновлять количество продуктов при повторном добавлении (по мере необходимости).
Но проблема здесь в том, что он никогда не находит 1-й продукт, который я добавляю, поэтому всякий раз, когда я добавляю этот продукт снова, он складывает продукт каждый раз и не обновляет количество продукта.Принимая во внимание, что для других продуктов, кроме 1-го, он действует как ожидалось.
например.когда продукт A добавляется в пустую корзину, он добавляет itemid
как A и qty = 1. Когда продукт A снова добавляется в пустую корзину, он добавляет itemid
как A и qty=1
снова (не делает qty = 2).Если я несколько раз добавлю B, C или другие, он обновит их qty
, как требуется
<?php
public function addinTable($id){
$this->loadModel('Carts');
/////////inserting into the cart table//////////7
$item = $this->Products->get($id);
$session = $this->request->session();
$allProducts = $session->read('Cart');
if(null!=$allProducts){
echo "<br>if(allProducts is NOT EMPTY)<br>";
if(array_search($id,array_column($allProducts, 'itemid'))){
//if the id is already in list
echo "<br><b>ITEM Is IN the list already</b>";
$key = array_search($id,array_column($allProducts, 'itemid'));
echo "<br> key is ", $key;
$newqty = debug($allProducts[$key]['qty']);
echo "<br> new qty +1 = ".$newqty+=1;
debug($allProducts[$key]['qty']++);
$session->write('Cart',$allProducts);
debug( $session->read('Cart'));
}
else{
echo"<br><b>The id is not found but cart is not empty</b>";
$allProducts[] = array('itemid'=>$id,
'qty' => 1
);
debug( $session->read('Cart'));
}
}
else{///////////if cart is empty at first
echo"<br><b>The cart is empty</b>";
$allProducts[] = array('itemid'=>$id,'qty' => 1);
debug($allProducts[0]);
debug($allProducts);
debug($allProducts[0]['itemid']);
// if(array_search($id,array_column($allProducts, 'itemid'))==true){echo "hello";}
$session->write('Cart',$allProducts);
debug($session->read('Cart'));
}
$session->write('Cart',$allProducts);//save the item
}
?>