从$ 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?

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.