Sometimes you need to remove items from a collection (products f.e.) after it was loaded. The following example shows how I removed non salable product items from a collection of sibling products. The respective collection have to be inherited from Varien_Data_Collection.
<?php public function getSiblingsCollection() { $oCollection = Mage::getModel('catalog/product')->getCollection() ->addFieldToFilter('sheldon_articlenbr', array('eq' => $this->getProduct()->getData('sheldon_articlenbr'))) ->addFieldToFilter('type_id', array('eq' => Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE)) ->addFieldToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED)) ->addFieldToFilter('sheldon_color', array('neq' => '')) ->addAttributeToSelect('sheldon_is_sale_product') ->addAttributeToSelect('sheldon_is_new_product') ->addAttributeToSelect('sheldon_color_image') ->addAttributeToFilter('price', array( 'gt' => 0.0000) ); foreach($oCollection as $sKey => $oProduct){ if(!$oProduct->isSaleable()){ $oCollection->removeItemByKey($oProduct->getId()); } } return $oCollection; }