framework/collections/CAttributeCollection.php
public function mergeWith($data,$recursive=true)
	{
		if(!$this->caseSensitive && (is_array($data) || $data instanceof Traversable))
		{
			$d=array();
			foreach($data as $key=>$value)
				$d[strtolower($key)]=$value;
			return parent::mergeWith($d,$recursive);
		}
		parent::mergeWith($data,$recursive);
	}
public function mergeWith($data,$recursive=true)
	{
		if(!$this->caseSensitive && (is_array($data) || $data instanceof Traversable))
		{
			$d=array();
			foreach($data as $key=>$value)
				$d[strtolower($key)]=$value;
			return parent::mergeWith($d,$recursive);
		}
		parent::mergeWith($data,$recursive);
	}
public function mergeWith ( $ data , $ recursive = true ) { if ( ! $ this -> caseSensitive && ( is_array ( $ data ) || $ data instanceof Traversable ) ) { $ d = array ( ) ; foreach ( $ data as $ key => $ value ) $ d [ strtolower ( $ key ) ] = $ value ; return parent :: mergeWith ( $ d , $ recursive ) ; } parent :: mergeWith ( $ data , $ recursive ) ; }
Merges iterable data into the map.

Existing elements in the map will be overwritten if their keys are the same as those in the source.
If the merge is recursive, the following algorithm is performed:
<ul>
<li>the map data is saved as $a, and the source data is saved as $b;</li>
<li>if $a and $b both have an array indexed at the same string key, the arrays will be merged using this algorithm;</li>
<li>any integer-indexed elements in $b will be appended to $a and reindexed accordingly;</li>
<li>any string-indexed elements in $b will overwrite elements in $a with the same index;</li>
</ul>

@param mixed $data the data to be merged with, must be an array or object implementing Traversable
@param boolean $recursive whether the merging should be recursive.

@throws CException If data is neither an array nor an iterator.
Merges iterable data into the map .