【发布时间】:2020-01-21 11:00:53
【问题描述】:
我有一个使用 PHP 会话的购物车。
添加项目:
$itemArray = array($produto=>
array('id'=>$produto, 'titulo'=>$titulo, 'quantidade'=>$quantidade, 'preco'=>$preco, 'image'=>$img)
);
$_SESSION["cart_item"] = $itemArray;
$produto 是 ID(唯一)。
$itemArray 看起来像:
Array
(
[0] => Array
(
[id] => 3
[titulo] => Teste produto sem tamanho
[quantidade] => 1
[preco] => 1000.00
[image] => /img/no_img.png
)
[1] => Array
(
[id] => 1
[titulo] => Sapato masculino bonito e lustrado em couro
[quantidade] => 2
[preco] => 157.20
[image] => produtos/1.jpg
)
)
删除:
if($action == "remove") {
$code = $_GET['code'];
if(!empty($_SESSION["cart_item"])) {
foreach($_SESSION["cart_item"] as $k => $v) {
if($_GET["code"] == $k)
unset($_SESSION["cart_item"][$k]);
if(empty($_SESSION["cart_item"]))
unset($_SESSION["cart_item"]);
}
}
}
问题是,有时它会删除一种产品而其他产品不会。如果我有 2 个产品,它不会删除任何产品。 有什么想法有什么问题吗?
【问题讨论】:
-
$k是索引,$v是值,你确定你的比较应该是索引,而不是值,即if($_GET["code"] == $v)? -
@mitkosoft 使用
== $v它也没有被删除。 -
你在
$_GET["code"]中传递了什么与$itemArray数组中的元素相匹配? -
@mitkosoft 它是产品 ID,例如:
cart.php?action=remove&code=1我要删除的产品的 ID。 -
你有一个多维数组,所以如果你需要取消设置整个SESSION元素,你需要比较
if($_GET["code"] == $_SESSION["cart_item"][$k]['id'])或者if($_GET["code"] == $v['id'])