php - 在 php 购物车中找不到数组项
问题描述
我在这里与 PHP 中的数组的奇怪情况作斗争。我正在尝试使用会话变量创建一个简单的购物车。
问题:
当购物车为空时,程序会在将产品添加到购物车时使用itemid
和qty
变量创建一个新产品(根据需要)。添加其他新产品时也是如此。
如果再次添加(根据需要),它还能够更新产品数量。
但是这里的问题是它永远找不到我添加的第一个产品,所以每当我再次添加该产品时,它每次都会堆叠产品并且不会更新产品的数量。而对于 1st 以外的其他产品,它按预期运行。
例如。当产品 A 被添加到空购物车时,它添加itemid
为 A 和 qty = 1。当产品 A再次添加到空购物车时,它再次添加itemid
为 A (不做 qty=2)。如果我反复添加 B、C 或其他人,它会根据需要更新它们qty=1
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
}
?>
解决方案
array_search()返回索引,第一个产品为 0。0 评估为假。
您需要在此处与 false 进行比较。
改变
if(array_search($id,array_column($allProducts, 'itemid'))) { //...
至
if(array_search($id,array_column($allProducts, 'itemid')) !== false) { //...
这是一个演示这种变化的小提琴:https ://3v4l.org/m62Ya
推荐阅读
- google-cloud-platform - 谷歌云平台,无配额“GPU(所有地区)”
- android - 如果在 onResume() 中恢复计时器,则取消 CountDownTimer 在 onPause() 中不起作用
- reactjs - 群集是突然的,首先使用复制的 url 登陆新选项卡,它不起作用,但可以刷新和放大和缩小
- java - 如何在Java程序中使用外部jar依赖?
- python - pandas.read_parquet 在 Azure databricks 笔记本中返回“IsADirectoryError”
- r - RTools 是否破坏了我运行某些包的能力?
- r - RStudio 中的编织错误:pandoc 转换失败,出现错误 23。markdown 不支持扩展 ascii_identifiers
- sql - 在 STRING_AGG 函数中使用 distinct 和 order by
- ruby-on-rails - 工具和脚本与简单的自动化 Rails 应用程序一起使用所需的想法
- tensorflow - 张量流中的自定义梯度尝试将模型转换为张量