Spec-Zone.ru › Yii 1.1

CMap

Пакет system.collections
Наследование class CMap » CComponent
Реализует IteratorAggregate, Traversable, ArrayAccess, Countable
Подклассы CAttributeCollection, CConfiguration, CCookieCollection, CFormElementCollection, CTypedMap
С версии 1.0
Исходный код framework/collections/CMap.php
CMap реализует коллекцию, которая принимает пары ключ-значение.

Вы можете получить доступ к элементу, добавить или удалить элемент по ключу, используя itemAt, add и remove. Чтобы получить количество элементов в массиве, используйте getCount. CMap также может использоваться как обычный массив следующим образом,
$map[$key]=$value; // add a key-value pair
unset($map[$key]); // remove the value with the specified key
if(isset($map[$key])) // if the map contains the key
foreach($map as $key=>$value) // traverse the items in the map
$n=count($map);  // returns the number of items in the map

Свойства

Свойство Тип Описание Определено
count целое число Возвращает количество элементов в массиве. CMap
iterator CMapIterator Возвращает итератор для обхода элементов в списке. CMap
keys массив список ключей CMap
readOnly булево является ли этот массив только для чтения. CMap

Методы

Метод Описание Определено
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CMap
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в null. CComponent
add() Добавляет элемент в массив. CMap
asa() Возвращает объект поведения с заданным именем. CComponent
attachBehavior() Прикрепляет поведение к этому компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик событий к событию. CComponent
canGetProperty() Определяет, может ли свойство читаться. CComponent
canSetProperty() Определяет, может ли свойство быть установлено. CComponent
clear() Удаляет все элементы из массива. CMap
contains() CMap
copyFrom() Копирует данные из итерируемого объекта в массив. CMap
count() Возвращает количество элементов в массиве. CMap
detachBehavior() Открепляет поведение от компонента. CComponent
detachBehaviors() Открепляет все поведения от компонента. CComponent
detachEventHandler() Открепляет существующий обработчик событий. CComponent
disableBehavior() Отключает прикрепленное поведение. CComponent
disableBehaviors() Отключает все прикрепленные поведения к этому компоненту. CComponent
enableBehavior() Включает прикрепленное поведение. CComponent
enableBehaviors() Включает все прикрепленные поведения к этому компоненту. CComponent
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
getCount() Возвращает количество элементов в массиве. CMap
getEventHandlers() Возвращает список прикрепленных обработчиков событий для события. CComponent
getIterator() Возвращает итератор для обхода элементов в списке. CMap
getKeys() Возвращает список ключей CMap
getReadOnly() Возвращает, является ли этот массив только для чтения. По умолчанию false. CMap
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикрепленные обработчики к событию с заданным именем. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
itemAt() Возвращает элемент со значением указанного ключа. CMap
mergeArray() Рекурсивно объединяет два или более массивов в один. CMap
mergeWith() Объединяет итерируемые данные в массив. CMap
offsetExists() Возвращает, существует ли элемент по указанному смещению. CMap
offsetGet() Возвращает элемент по указанному смещению. CMap
offsetSet() Устанавливает элемент по указанному смещению. CMap
offsetUnset() Удаляет элемент по указанному смещению. CMap
raiseEvent() Возбуждает событие. CComponent
remove() Удаляет элемент из массива по его ключу. CMap
toArray() CMap

Защищенные методы

Метод Описание Определено
setReadOnly() Устанавливает, является ли этот список только для чтения. CMap

Подробное описание свойств

count свойство только для чтения

public integer getCount()

Возвращает количество элементов в массиве.

iterator свойство только для чтения

public CMapIterator getIterator()

Возвращает итератор для обхода элементов в списке. Этот метод необходим для интерфейса IteratorAggregate.

keys свойство только для чтения

public array getKeys()

список ключей

readOnly свойство

public boolean getReadOnly()
protected void setReadOnly(boolean $value)

является ли этот массив только для чтения. По умолчанию false.

Подробное описание методов

__construct() метод

public void __construct(array $data=NULL, boolean $readOnly=false)
$data array исходные данные. По умолчанию null, что означает отсутствие инициализации.
$readOnly boolean является ли список только для чтения
Исходный код: framework/collections/CMap.php#53 (показать)
public function __construct($data=null,$readOnly=false)
{
    if(
$data!==null)
        
$this->copyFrom($data);
    
$this->setReadOnly($readOnly);
}

Конструктор. Инициализирует список массивом или итерируемым объектом.

add() метод

public void add(mixed $key, mixed $value)
$key mixed ключ
$value mixed значение
Исходный код: framework/collections/CMap.php#134 (показать)
public function add($key,$value)
{
    if(!
$this->_r)
    {
        if(
$key===null)
            
$this->_d[]=$value;
        else
            
$this->_d[$key]=$value;
    }
    else
        throw new 
CException(Yii::t('yii','The map is read only.'));
}

Добавляет элемент в карту. Обратите внимание, что если указанный ключ уже существует, старое значение будет перезаписано.

clear() метод

public void clear()
Исходный код: framework/collections/CMap.php#177 (показать)
public function clear()
{
    foreach(
array_keys($this->_d) as $key)
        
$this->remove($key);
}

Удаляет все элементы из карты.

contains() метод

public boolean contains(mixed $key)
$key mixed ключ
{return} boolean есть ли элемент с указанным ключом в карте
Исходный код: framework/collections/CMap.php#187 (показать)
public function contains($key)
{
    return isset(
$this->_d[$key]) || array_key_exists($key,$this->_d);
}

copyFrom() метод

public void copyFrom(mixed $data)
$data mixed данные для копирования, должны быть массивом или объектом, реализующим Traversable
Исходный код: framework/collections/CMap.php#206 (показать)
public function copyFrom($data)
{
    if(
is_array($data) || $data instanceof Traversable)
    {
        if(
$this->getCount()>0)
            
$this->clear();
        if(
$data instanceof CMap)
            
$data=$data->_d;
        foreach(
$data as $key=>$value)
            
$this->add($key,$value);
    }
    elseif(
$data!==null)
        throw new 
CException(Yii::t('yii','Map data must be an array or an object implementing Traversable.'));
}

Копирует итерируемые данные в карту. Обратите внимание, что существующие данные в карте сначала будут очищены.

count() метод

public integer count()
{return} integer количество элементов в карте.
Исходный код: framework/collections/CMap.php#91 (показать)
public function count()
{
    return 
$this->getCount();
}

Возвращает количество элементов в карте. Этот метод требуется интерфейсом Countable.

getCount() метод

public integer getCount()
{return} integer количество элементов в карте
Исходный код: framework/collections/CMap.php#100 (показать)
public function getCount()
{
    return 
count($this->_d);
}

Возвращает количество элементов в карте.

getIterator() метод

public CMapIterator getIterator()
{return} CMapIterator итератор для обхода элементов в списке.
Исходный код: framework/collections/CMap.php#81 (показать)
public function getIterator()
{
    return new 
CMapIterator($this->_d);
}

Возвращает итератор для обхода элементов в списке. Этот метод требуется интерфейсом IteratorAggregate.

getKeys() метод

public array getKeys()
{return} array список ключей
Исходный код: framework/collections/CMap.php#108 (показать)
public function getKeys()
{
    return 
array_keys($this->_d);
}

getReadOnly() метод

public boolean getReadOnly()
{return} boolean является ли карта только для чтения. По умолчанию false.
Исходный код: framework/collections/CMap.php#63 (показать)
public function getReadOnly()
{
    return 
$this->_r;
}

itemAt() метод

public mixed itemAt(mixed $key)
$key mixed ключ
{return} mixed элемент по указанному ключу, null, если элемент не найден
Исходный код: framework/collections/CMap.php#119 (показать)
public function itemAt($key)
{
    if(isset(
$this->_d[$key]))
        return 
$this->_d[$key];
    else
        return 
null;
}

Возвращает элемент с указанным ключом. Этот метод идентичен offsetGet.

mergeArray() метод

public static array mergeArray(array $a, array $b)
$a array массив, к которому будет произведено слияние
$b array массив, из которого будет произведено слияние. Вы можете указать дополнительные массивы через третий, четвёртый и т.д. аргумент.
{return} array объединённый массив (исходные массивы не изменяются).
Исходный код: framework/collections/CMap.php#280 (показать)
public static function mergeArray($a,$b)
{
    
$args=func_get_args();
    
$res=array_shift($args);
    while(!empty(
$args))
    {
        
$next=array_shift($args);
        foreach(
$next as $k => $v)
        {
            if(
is_integer($k))
                isset(
$res[$k]) ? $res[]=$v : $res[$k]=$v;
            elseif(
is_array($v) && isset($res[$k]) && is_array($res[$k]))
                
$res[$k]=self::mergeArray($res[$k],$v);
            else
                
$res[$k]=$v;
        }
    }
    return 
$res;
}

Рекурсивно объединяет два или более массивов в один. Если в каждом массиве есть элемент с одинаковым строковым значением ключа, последнее значение перекроет предыдущее (отличается от array_merge_recursive). Рекурсивное слияние будет выполнено, если оба массива содержат элемент типа массив и имеют одинаковый ключ. Для элементов с целочисленными ключами элементы из последнего массива будут добавлены к первому массиву.

См. также

  • mergeWith

mergeWith() метод

public void mergeWith(mixed $data, boolean $recursive=true)
$data mixed данные для слияния, должны быть массивом или объектом, реализующим Traversable
$recursive boolean требуется ли рекурсивное слияние
Исходный код: framework/collections/CMap.php#238 (показать)
public function mergeWith($data,$recursive=true)
{
    if(
is_array($data) || $data instanceof Traversable)
    {
        if(
$data instanceof CMap)
            
$data=$data->_d;
        if(
$recursive)
        {
            if(
$data instanceof Traversable)
            {
                
$d=array();
                foreach(
$data as $key=>$value)
                    
$d[$key]=$value;
                
$this->_d=self::mergeArray($this->_d,$d);
            }
            else
                
$this->_d=self::mergeArray($this->_d,$data);
        }
        else
        {
            foreach(
$data as $key=>$value)
                
$this->add($key,$value);
        }
    }
    elseif(
$data!==null)
        throw new 
CException(Yii::t('yii','Map data must be an array or an object implementing Traversable.'));
}

Объединяет данные, полученные от итерируемого источника, в карту.

Существующие элементы в карте будут перезаписаны, если их ключи совпадают с ключами в источнике. Если слияние рекурсивное, выполняется следующий алгоритм:

  • данные карты сохраняются как $a, а данные источника как $b;
  • если $a и $b оба имеют массив по одинаковому строковому ключу, массивы будут объединены с помощью этого алгоритма;
  • все целочисленные индексы элементов в $b будут добавлены к $a и переиндексированы соответственно;
  • все строковые индексы элементов в $b перезапишут элементы в $a с одинаковым индексом;

offsetExists() метод

public boolean offsetExists(mixed $offset)
$offset mixed проверяемый смещение
{return} boolean
Исходный код: framework/collections/CMap.php#306 (показать)
public function offsetExists($offset)
{
    return 
$this->contains($offset);
}

Возвращает, есть ли элемент по указанному смещению. Этот метод необходим для интерфейса ArrayAccess.

offsetGet() метод

public mixed offsetGet(integer $offset)
$offset integer смещение для извлечения элемента.
{return} mixed элемент по смещению, null, если элемент не найден по смещению
Исходный код: framework/collections/CMap.php#317 (показать)
public function offsetGet($offset)
{
    return 
$this->itemAt($offset);
}

Возвращает элемент по указанному смещению. Этот метод требуется интерфейсом ArrayAccess.

offsetSet() метод

public void offsetSet(integer $offset, mixed $item)
$offset integer смещение для установки элемента
$item mixed значение элемента
Исходный код: framework/collections/CMap.php#328 (показать)
public function offsetSet($offset,$item)
{
    
$this->add($offset,$item);
}

Устанавливает элемент по указанному смещению. Этот метод требуется интерфейсом ArrayAccess.

offsetUnset() метод

public void offsetUnset(mixed $offset)
$offset mixed смещение для удаления элемента
Исходный код: framework/collections/CMap.php#338 (показать)
public function offsetUnset($offset)
{
    
$this->remove($offset);
}

Удаляет элемент по указанному смещению. Этот метод требуется интерфейсом ArrayAccess.

remove() метод

public mixed remove(mixed $key)
$key mixed ключ удаляемого элемента
{return} mixed удаленное значение, null, если ключ не существует.
Исходный код: framework/collections/CMap.php#153 (показать)
public function remove($key)
{
    if(!
$this->_r)
    {
        if(isset(
$this->_d[$key]))
        {
            
$value=$this->_d[$key];
            unset(
$this->_d[$key]);
            return 
$value;
        }
        else
        {
            
// it is possible the value is null, which is not detected by isset
            
unset($this->_d[$key]);
            return 
null;
        }
    }
    else
        throw new 
CException(Yii::t('yii','The map is read only.'));
}

Удаляет элемент из карты по ключу.

setReadOnly() метод

protected void setReadOnly(boolean $value)
$value boolean является ли список только для чтения
Исходный код: framework/collections/CMap.php#71 (показать)
protected function setReadOnly($value)
{
    
$this->_r=$value;
}

toArray() метод

public array toArray()
{return} array список элементов в массиве
Исходный код: framework/collections/CMap.php#195 (показать)
public function toArray()
{
    return 
$this->_d;
}

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CMap

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API