Класс Set
Класс, используемый для манипулирования массивами.
Устаревший: 3.0.0 Будет удален в 3.0. Используйте Hash вместо него.
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT Лицензия
Расположение: Cake/Utility/Set.php
Краткое описание методов
- Уплощает массив для сортировки
-
Преобразует заданное значение в объект. Если $value является объектом, он возвращает $value. В противном случае он преобразует $value в объект типа $class и, если это основной элемент, присваивает имя $key первому массиву. Если $value не пуст, он будет использован для установки свойств возвращаемого объекта (рекурсивно). Если $key является числовым, структура массива будет сохранена.
-
Позволяет применять метод обратного вызова к элементам массива, извлечённым путём, совместимым с Set::extract().
- Проверяет, установлен ли определённый путь в массиве
-
Извлекает значение из массива или объекта по заданному пути, используя синтаксис пути массива, например: "{n}.Person.{[a-z]+}" - где "{n}" представляет числовой ключ, "Person" представляет строковый литерал, а "{[a-z]+}" (т.е. любой строковый литерал в скобках помимо {n} и {s}) интерпретируется как регулярное выражение.
-
Создаёт ассоциативный массив, используя $path1 для построения ключей и, необязательно, $path2 для получения значений. Если $path2 не указан, все значения будут инициализированы как null (полезно для Set::merge). Необязательно можно сгруппировать значения по тому, что получено при прослеживании пути, указанного в $groupPath.
- Определяет, содержит ли один Set или массив точные ключи и значения другого.
-
Подсчитывает размерности массива. Если $all установлен в false (что является значением по умолчанию), он будет учитывать только размерность первого элемента в массиве.
- Вычисляет разницу между Set и массивом, двумя Set или двумя массивами
- Возвращает значение из списка массива, если ключ существует.
- Развертывает/раскладывает строку в массив
-
Реализует частичную поддержку XPath 2.0. Если $path не содержит «/», вызов делегируется Set::classicExtract(). Также аргументы $path и $data обратимы.
- Фильтрует пустые элементы из массива маршрутов, исключая '0'.
-
Сжимает многомерный массив в одномерный, используя путь массива с разделителем для ключа каждого элемента массива, т. е. array(array('Foo' => array('Bar' => 'Far'))) преобразуется в array('0.Foo.Bar' => 'Far').
- Возвращает серию значений, извлечённых из массива, отформатированных по строке формата.
- Возвращает значение в указанной позиции
- Вставляет $data в массив, как определено $path.
-
Преобразует содержимое объекта Set в иерархию объектов. Числовые ключи сохраняются как массивы объектов
- Эта функция может использоваться, чтобы увидеть, соответствует ли один элемент или заданный xpath определённым условиям.
-
Эта функция может рассматриваться как гибрид между PHP array_merge и array_merge_recursive. Разница заключается в том, что если ключ массива содержит другой массив, функция работает рекурсивно (в отличие от array_merge), но не делает этого для ключей, содержащих строки (в отличие от array_merge_recursive).
- Принимает плоский массив и возвращает вложенный массив
- Нормализует строку или список массивов.
- Проверяет, являются ли все значения в массиве числовыми
- Добавляет различия в $array2 в конец $array
- Удаляет элемент из Set или массива, как определено $path.
- Преобразует объект в массив.
- Сортирует массив по любому значению, определяемому путём, совместимым с Set
Подробное описание методов
_flatten()source protected static
_flatten( array $results , string $key null )
Уплощает массив для сортировки
Параметры
- массив
$results - Массив для уплощения.
- строка
$keyнеобязательно null - Ключ.
Возвращает
массив_map()source protected static
_map( array $array , string $class , boolean $primary false )
Преобразует заданное значение в объект. Если $value является объектом, он возвращает $value. В противном случае он преобразует $value в объект типа $class и, если это основной элемент, присваивает имя $key первому массиву. Если $value не пуст, он будет использован для установки свойств возвращаемого объекта (рекурсивно). Если $key является числовым, структура массива будет сохранена.
Параметры
- массив
$array - $array Массив для преобразования
- строка
$class - Имя класса
- логическое значение
$primaryнеобязательно false - присваивать ли ключ первого массива как имя
Возвращает
смешанный типПреобразованный объект
apply()source public static
apply( mixed $path , array $data , mixed $callback , array $options array() )
Позволяет применять метод обратного вызова к элементам массива, извлечённым путём, совместимым с Set::extract().
Параметры
- смешанный тип
$path - Путь, совместимый с Set, к значению массива
- массив
$data - Массив данных для извлечения и последующей обработки с помощью $callback.
- смешанный тип
$callback Метод обратного вызова, который будет применяться к извлечённым данным. См. http://ca2.php.net/manual/en/language.pseudo-types.php#language.types.callback для примеров форматов обратного вызова.
- массив
$optionsнеобязательно array() Опции: - type : может быть pass, map или reduce. Map передаёт заданный обратный вызов в array_map, reduce - в array_reduce, а pass - в call_user_func_array().
Возвращает
смешанный типРезультат применения обратного вызова к извлечённым данным
Ссылка
http://book.cakephp.org/2.0/en/core-utility-libraries/set.html#Set::applycheck()source public static
check( string|array $data , string|array $path null )
Проверяет, установлен ли определённый путь в массиве
Параметры
- строка или массив
$data - Данные для проверки
- строка или массив
$pathнеобязательно null - Строка, разделённая точками.
Возвращает
логическое значениеtrue, если путь найден, иначе false
Ссылка
http://book.cakephp.org/2.0/en/core-utility-libraries/set.html#Set::checkclassicExtract()source public static
classicExtract( array $data , string|array $path null )
Получает значение из массива или объекта, содержащегося в заданном пути, используя синтаксис пути массива, например: "{n}.Person.{[a-z]+}" - где "{n}" представляет числовой ключ, "Person" - строковую литерал, а "{[a-z]+}" (т.е. любая строковая литерал, заключенная в скобки кроме {n} и {s}) интерпретируется как регулярное выражение.
Параметры
- массив
$data - Массив, из которого извлекать
- строка|массив
$pathнеобязательно null - В виде массива или в виде строки, разделенной точками.
Возвращает
mixedМассив совпавших элементов или содержимое единственного выбранного элемента или null в следующих случаях: $path или $data равны null, элементы не найдены.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::classicExtractcombine()source public static
combine( array|object $data , string|array $path1 null , string|array $path2 null , string $groupPath null )
Создает ассоциативный массив, используя $path1 в качестве пути для построения ключей и необязательно $path2 в качестве пути для получения значений. Если $path2 не указан, все значения будут инициализированы как null (полезно для Set::merge). Вы можете необязательно сгруппировать значения по тому, что получается при следовании пути, указанному в $groupPath.
Параметры
- массив|объект
$data - Массив или объект, из которого извлекать ключи и значения
- строка|массив
$path1необязательно null - В виде массива или в виде строки, разделенной точками.
- строка|массив
$path2необязательно null - В виде массива или в виде строки, разделенной точками.
- строка
$groupPathнеобязательно null - В виде массива или в виде строки, разделенной точками.
Возвращает
массивОбъединенный массив
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::combinecontains()source public static
contains( array $val1 , array $val2 null )
Определяет, содержит ли один массив или набор данных точные ключи и значения другого.
Параметры
- массив
$val1 - Первое значение
- массив
$val2необязательно null - Второе значение
Возвращает
booleantrue, если $val1 содержит $val2, иначе false
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::containscountDim()source public static
countDim( array $array , boolean $all false , integer $count 0 )
Подсчитывает размерности массива. Если $all установлен в false (по умолчанию), учитывается только размерность первого элемента в массиве.
Параметры
- массив
$array - Массив для подсчета размерностей
- boolean
$allнеобязательно false - Установить в true, чтобы посчитать размерность, учитывая все элементы в массиве
- целое число
$countнеобязательно 0 - Начать подсчет размерностей с этого числа
Возвращает
целое числоКоличество размерностей в $array
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::countDimdiff()source public static
diff( mixed $val1 , mixed $val2 null )
Вычисляет разницу между набором и массивом, двумя наборами или двумя массивами.
Параметры
- смешанный
$val1 - Первое значение
- смешанный
$val2необязательно null - Второе значение
Возвращает
массивВозвращает пары ключ => значение, которые не являются общими в $val1 и $val2. Выражение для этой функции ($val1 - $val2) + ($val2 - ($val1 - $val2))
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::diffenum()source public static
enum( string $select , array|string $list null )
Возвращает значение из списка массивов, если ключ существует.
Если передан список через запятую, массивы являются числовыми, и ключ первого равен 0. $list = 'no, yes' преобразуется в $list = array(0 => 'no', 1 => 'yes');
Если используется массив, ключи могут быть строками, например: array('no' => 0, 'yes' => 1);
$list по умолчанию равен 0 = no 1 = yes, если параметр не передан.
Параметры
- строка
$select - Ключ в $list для возврата
- массив|строка
$listнеобязательно null - Может быть массивом или списком, разделенным запятыми.
Возвращает
строказначение ключа массива или null, если совпадения нет
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::enumexpand()source public static
expand( array $data , string $separator '.' )
Расширяет/развертывает строку в массив.
Например, развертывает массив, который был свернут с помощью Set::flatten() в многомерный массив. Таким образом, array('0.Foo.Bar' => 'Far') становится array(array('Foo' => array('Bar' => 'Far'))).
Параметры
- массив
$data - Сжатый массив
- строка
$separatorнеобязательно '.' - Разделитель, используемый для развёртывания
Возвращает
массивextract()source public static
extract( string $path , array $data null , array $options array() )
Реализует частичную поддержку XPath 2.0. Если $path не содержит '/', вызов делегируется Set::classicExtract(). Также аргументы $path и $data обратимы.
В настоящее время поддерживаются следующие селекторы:
- /User/id (аналогично классическому {n}.User.id)
- /User[2]/name (выбирает имя второго User)
- /User[id>2] (выбирает всех User с id > 2)
- /User[id>2][<5] (выбирает всех User с id > 2, но < 5)
- /Post/Comment[author_name=john]/../name (Выбирает имя всех записей Post, у которых есть хотя бы один комментарий, написанный john)
- /Posts[name] (Выбирает все записи Posts, у которых есть ключ 'name')
- /Comment/.[1] (Выбирает содержимое первого комментария)
- /Comment/.[:last] (Выбирает последний комментарий)
- /Comment/.[:first] (Выбирает первый комментарий)
- /Comment[text=/cakephp/i] (Выбирает все комментарии, текст которых соответствует регулярному выражению /cakephp/i)
- /Comment/@* (Выбирает все имена ключей всех комментариев)
Другие ограничения:
- В настоящее время поддерживаются только абсолютные пути, начинающиеся с одного слэша '/'
Предупреждение: Несмотря на наличие множества тестов, поддержка XPath еще не прошла большое количество реальных тестов. Пожалуйста, сообщайте об ошибках по мере их обнаружения. Предложения по дополнительным реализуемым функциям также приветствуются!
Параметры
- строка
$path - Абсолютный путь XPath 2.0
- массив
$dataнеобязательно null - Массив данных, из которого извлекать
- массив
$optionsнеобязательно array() - В настоящее время поддерживает только 'flatten', который можно отключить для повышения поддержки XPath
Возвращает
смешанныйМассив совпавших элементов или содержимое единственного выбранного элемента или null в следующих случаях: $path или $data равны null, элементы не найдены.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::extractfilter()source public static
filter( array $var )
Фильтрация пустых элементов из массива маршрута, исключая '0'.
Параметры
- массив
$var - Массив для фильтрации или значение при использовании коллбека
Возвращает
смешанныйОтфильтрованный массив или true/false при использовании коллбека
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::filterflatten()source public static
flatten( array $data , string $separator '.' )
Преобразует многомерный массив в одномерный, используя разделитель для ключей элементов массива, например, массив (массив ('Foo' => массив ('Bar' => 'Far'))) преобразуется в массив ('0.Foo.Bar' => 'Far').
Параметры
- массив
$data - Массив для преобразования
- строка
$separatorнеобязательно '.' - Строка, используемая для разделения элементов ключа массива в пути, по умолчанию '.'
Возвращает
массивСсылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::flattenformat()source public static
format( array $data , string $format , array $keys )
Возвращает серию значений, извлеченных из массива, отформатированных в строке формата.
Параметры
- массив
$data - Исходный массив, из которого извлекаются данные
- строка
$format - Строка формата, в которую будут вставлены значения, см. sprintf()
- массив
$keys - Массив, содержащий один или несколько ключевых путей в стиле Set::extract()
Возвращает
массив|nullМассив строк, извлеченных из $keys и отформатированных с помощью $format, в противном случае null.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::formatget()source public static
get( array $input , string|array $path null )
Возвращает значение по указанному положению
Параметры
- массив
$input - массив
- строка|массив
$pathнеобязательно null - строка или массив ключей массива
Возвращает
значениезначение по указанному положению или null, если его нет
insert()source public static
insert( array $list , string $path , array $data null )
Вставляет $data в массив в соответствии с $path.
Параметры
- массив
$list - Куда вставлять
- строка
$path - Строка, разделенная точками.
- массив
$dataнеобязательно null - Данные для вставки
Возвращает
массивСсылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::insertmap()source public static
map( string $class 'stdClass' , string $tmp 'stdClass' )
Преобразует содержимое объекта Set в иерархию объектов. Числовые ключи сохраняются как массивы объектов
Параметры
- строка
$classнеобязательно 'stdClass' - Имя класса типа объекта, к которому нужно преобразовать
- строка
$tmpнеобязательно 'stdClass' - Временное имя класса, используемое как $class, если $class является массивом
Возвращает
объект|nullИерархический объект
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::mapmatches()source public static
matches( string|array $conditions , array $data array() , integer $i null , integer $length null )
Эта функция может использоваться для проверки, соответствует ли один элемент или заданный XPath определенным условиям.
Параметры
- строка|массив
$conditions - Массив строк условий или выражение XPath
- массив
$dataнеобязательно array() - Массив данных для выполнения проверки
- целое число
$iнеобязательно null - Необязательно: номер элемента ('nth'), к которому применяется проверка.
- целое число
$lengthнеобязательно null - Длина.
Возвращает
booleanСсылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::matchesmerge()source public static
merge( array $data , array $merge null )
Эта функция может быть описана как гибрид между PHP array_merge и array_merge_recursive. Разница заключается в том, что если ключ массива содержит другой массив, функция ведет себя рекурсивно (в отличие от array_merge), но не делает этого для ключей, содержащих строки (в отличие от array_merge_recursive).
Поскольку этот метод эмулирует array_merge, он будет переупорядочивать числовые ключи. В сочетании с числовыми ключами, содержащими массивы, в неправильном порядке, результаты могут быть потерянными.
Примечание: эта функция будет работать с неограниченным количеством аргументов и преобразует не массивы в массивы.
Параметры
- массив
$data - Массив, подлежащий слиянию
- массив
$mergeнеобязательно null - Массив для слияния с
Возвращает
массивОбъединенный массив
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::mergenest()source public static
nest( mixed $data , array $options array() )
Принимает плоский массив и возвращает вложенный массив
Параметры
- смешанный
$data - Данные
- массив
$optionsнеобязательно array() Опции: children - имя ключа для использования в результирующем наборе данных для потомков idPath - путь к ключу, идентифицирующему каждый элемент parentPath - путь к ключу, идентифицирующему родителя каждого элемента root - идентификатор желаемого верхнего результата
Возвращает
массиввложенных результатов
Ссылка
normalize()source public static
normalize( mixed $list , boolean $assoc true , string $sep ',' , boolean $trim true )
Нормализует список строк или массивов.
Параметры
- смешанный
$list - Список для нормализации
- булево
$assocнеобязательно true - Если true, $list будет преобразован в ассоциативный массив
- строка
$sepнеобязательно ',' - Если $list - строка, она будет разделена на массив с помощью $sep
- булево
$trimнеобязательно true - Если true, разделенные строки будут обрезаны
Возвращает
массивСсылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::normalizenumeric()source public static
numeric( array $array null )
Проверяет, являются ли все значения в массиве числовыми.
Параметры
- массив
$arrayнеобязательно null - Массив для проверки. Если null, значение текущего объекта Set
Возвращает
booleantrue, если значения числовые, false в противном случае
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::numericpushDiff()source public static
pushDiff( array $array , array $array2 )
Добавляет отличия в $array2 в конец $array
Параметры
- массив
$array - Исходный массив
- массив
$array2 - Отличия для добавления
Возвращает
массивОбъединенный массив
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::pushDiffremove()source public static
remove( array $list , string $path null )
Удаляет элемент из набора или массива, как определено в $path.
Параметры
- массив
$list - Откуда удалить
- строка
$pathнеобязательно null - Строка, разделенная точками.
Возвращает
массивМассив с удаленным $path из его значения
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::removereverse()source public static
reverse( object $object )
Преобразует объект в массив.
Параметры
- объект
$object - Объект для преобразования
Возвращает
массивМассивная представление данного объекта
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::reversesort()source public static
sort( array $data , string $path , string $dir )
Сортирует массив по любому значению, определяемому путем, совместимым с Set.
Параметры
- массив
$data - Массив данных для сортировки
- строка
$path - Путь, совместимый с Set, к значению массива
- строка
$dir - Направление сортировки - возрастающее (ASC) или убывающее (DESC)
Возвращает
массивОтсортированный массив данных
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::sort
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/2.8/class-Set.html