购物车出现的问题是同一产品被多次添加。
购物车出现的问题是同一产品被多次添加。
我有一个使用PHP和MySQL的购物车,工作良好,但问题是,如果我添加的产品只有代码数字,没有任何字母,那么产品会被多次添加。
例如,产品代码:K001工作正常,但如果产品代码是001而没有K,则会出现相同的问题。
$cartArray = array( $code=>array( 'name'=>$name, 'code'=>$code, 'price'=>$price, 'quantity'=>1, 'image'=>$image) ); if(empty($_SESSION["shopping_cart"])) { $_SESSION["shopping_cart"] = $cartArray; $status = "产品已添加到购物车!"; }else{ $array_keys = array_keys($_SESSION["shopping_cart"]); if(in_array($array_keys, $code)) { $status = " 产品已经添加到购物车!"; } else { $_SESSION["shopping_cart"] = array_merge( $_SESSION["shopping_cart"], $cartArray ); $status = "产品已添加到购物车!"; } } } ?>
我已经添加了,请看一下,但是有同样的问题
$row = mysqli_fetch_assoc($result); $name = $row['name']; $code = strval($row['code']); $price = $row['price']; $image = $row['file_name']; $cartArray = array( $code=>array( 'name'=>$name, 'code'=>$code, 'price'=>$price, 'quantity'=>1, 'image'=>$image) );
购物车重复添加相同产品的问题可能是由于PHP将数字自动转换为浮点数或整数(取决于数字)导致的。在发送之前将$code转换为字符串可以解决这个问题。
你可以使用多种方式来实现这一点:
$code = "$code";
但是这样可能会丢失前导零。
$code = strval($code);
如果$code是整数,则也会丢失前导零。
正如你所看到的,有多种方法可以实现这一点,但是在PHP中尽量不要使用前导零,或者可以在之后添加它们,就像这个解决方案中所示:
另外,例如我正在尝试使用代码:1234,而不是使用0。
我已经添加了你推荐的代码,但没有结果,你能检查一下吗?
$row = mysqli_fetch_assoc($result); $name = $row['name']; $code = strval($row['code']); $price = $row['price']; $image = $row['file_name']; $cartArray = array( $code=>array( 'name'=>$name, 'code'=>$code, 'price'=>$price, 'quantity'=>1, 'image'=>$image) );