doushi1960 2016-10-03 13:15
浏览 43

从$ SESSION数组中删除对象

I've got a problem with removing object from '$_SESSION' array. My aim is to delete each product from array after choosing one particular. This is the view part:

<?php                   
  for ($i=0; $i < count($this->products); $i++) { 
     echo "<a class='remove_from_basket' href='" .$this->baseUrl. "/shop/delete-product/id/" .$this->products[$i]->product_id. "'>Delete</a>";
  }    
?>

Then in PHP part I get this products ID with:

public function deleteProductAction() {    
        $productID = $this->_getParam('id', 0);
        session_start();
        $obj = $_SESSION['products'];    
        foreach ($obj as $key => $product) {
            if ($product['product_id'] == $productID) {
                unset($product);
            }
        }
        $_SESSION['products'] = $obj;    
    }

$obj after printing_r:

Array
(
    [2] => Zend_Db_Table_Row Object
        (
            [_data:protected] => Array
                (
                    [product_id] => 26
                )

            [_cleanData:protected] => Array
                (
                    [product_id] => 26

            [_modifiedFields:protected] => Array
                (
                )

            [_table:protected] => 
            [_connected:protected] => 
            [_readOnly:protected] => 
            [_tableClass:protected] => Application_Model_DbTable_Products
            [_primary:protected] => Array
                (
                    [1] => product_id
                )

        )

    [3] => Zend_Db_Table_Row Object
        (
            [_data:protected] => Array
                (
                    [product_id] => 26
                )

            [_cleanData:protected] => Array
                (
                    [product_id] => 26
                )

            [_modifiedFields:protected] => Array
                (
                )

            [_table:protected] => 
            [_connected:protected] => 
            [_readOnly:protected] => 
            [_tableClass:protected] => Application_Model_DbTable_Products
            [_primary:protected] => Array
                (
                    [1] => product_id
                )

        )

)

However, nothing happens... Could anyone help?

  • 写回答

1条回答 默认 最新

  • douzhenzu0247 2016-10-03 13:16
    关注

    Here, in your code, you are just unsetting the $product, which is totally not related to your session variable. You need to use the index of the object and unset it in the original object.

    foreach ($_SESSION['products'] as $key => $product) {
        if ($product['product_id'] == $productID) {
            unset($_SESSION['products'][$key]);
        }
    }
    

    Or just for the $obj you want to do, you can do like:

    foreach ($obj as $key => $product) {
        if ($product['product_id'] == $productID) {
            unset($obj[$key]);
        }
    }
    

    The above code removes the index completely.

    评论

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)