Класс Set
Класс, используемый для обработки массивов.
Устаревший: 3.0.0 Будет удалён в 3.0. Используйте Hash вместо этого.
Авторские права: Авторские права (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 и массивом, двумя Sets или двумя массивами
- Возвращает значение из списка массива, если ключ существует.
- Развертывает/распаковывает строку в массив
-
Реализует частичную поддержку 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's 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 - Присваивать ли первому ключу массива имя name
Возвращаемое значение
смешанноеПреобразованный объект
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/ru/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/ru/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/ru/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 - В виде массива или в виде строки, разделенной точками.
Возвращает
смешанный типМассив совпавших элементов или содержимое одного выбранного элемента или 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 )
Определяет, содержит ли один массив или Set точные ключи и значения другого.
Параметры
- массив
$val1 - Первое значение
- массив
$val2необязательно null - Второе значение
Возвращает
логическое значениеtrue, если $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 - Массив для подсчета размерности
- логическое значение
$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 )
Вычисляет разницу между Set и массивом, двумя Sets или двумя массивами.
Параметры
- смешанный тип
$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 )
Возвращает значение из списка массива, если ключ существует.
Если передан $list через запятую, массивы являются числовыми, при этом ключом первого является 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 (Выбирает имя всех Постов, имеющих хотя бы один комментарий, написанный john)
- /Posts[name] (Выбирает все Посты, имеющие ключ '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 '.' )
Сжимает многомерный массив в одномерный, используя разделитель для ключей элементов массива, т.е. array(array('Foo' => array('Bar' => 'Far'))) преобразуется в array('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's 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.
https://api.cakephp.org/2.9/class-Set.html