我正在寻找帮助,以便在PHP中找出这个循环。我从购物车中删除商品,数组数据存储在$_session['products']
内。我遇到的问题是试图让购物车一次删除多个项目。一次删除一个项目时,此代码功能正常。对于多个项目,它有时会复制未删除的项目或删除除了所选项目之外的所有项目。
Array (
[0] => Array ( [name] => Another Test
[code] => 8456885345
[qty] => 1
[price] => 893.98 )
[1] => Array ( [name] => Another Test 2
[code] => 11134455
[qty] => 1
[price] => 3.12 )
)
if(isset($_GET["removemp"]) && isset($_GET["return_url"]) && isset($_SESSION["products"]))
{
$product_code = $_GET["removemp"];
$return_url = $_GET["return_url"];
$product_explode = explode(',', $product_code);
foreach($product_explode as $code)
{
foreach ($_SESSION["products"] as $cart_itm)
{
if($cart_itm["code"]!=$code){
$product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$cart_itm["qty"], 'price'=>$cart_itm["price"]);
}
$_SESSION["products"] = $product;
}
}
}
答案 0 :(得分:0)
将产品ID存储为会话购物车数组键,并通过在$_GET["removemp"]
中将所需的商品ID存储为逗号分隔列表(如上所述)来删除每个商品param,例如:
// where the array key is the product ID
Array (
[12] => Array ( [name] => Another Test
[code] => 8456885345
[qty] => 1
[price] => 893.98 )
[34] => Array ( [name] => Another Test 2
[code] => 11134455
[qty] => 1
[price] => 3.12 )
)
if(isset($_GET["removemp"]) && isset($_GET["return_url"]) && isset($_SESSION["products"]))
{
$product_code = $_GET["removemp"];
$return_url = $_GET["return_url"];
$product_explode = explode(',', $product_code);
foreach($product_explode as $code)
{
// and simply unset each cart array
unset($_SESSION["products"][$code]);
}
}
使用产品ID作为数组键设置数组:
$_SESSION["products"][$product_id] = array ( 'name' => 'Another Test',
'code' => 8456885345,
'qty' => 1,
'price' => 893.98 );