在会话变量PHP中删除数组的问题

时间:2014-08-28 07:17:29

标签: php

我正在寻找帮助,以便在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;
            }
        }
    }

1 个答案:

答案 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 );