Класс Set
Класс, используемый для работы с массивами.
Устаревший: 3.0.0 Будет удален в 3.0. Используйте вместо него Hash.
Авторские права: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
Лицензия: MIT License
Расположение: 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 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().
Возвращает
смешанный типРезультат обратного вызова при применении к извлечённым данным
Ссылка
https://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
Ссылка
https://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, не найдено элементов.
Ссылка
https://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 - В виде массива или строки, разделенной точками.
Возвращает
массивОбъединенный массив
Ссылка
https://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
Ссылка
https://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
Ссылка
https://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))
Ссылка
https://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, если совпадения нет
Ссылка
https://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, у которых есть хотя бы один Comment, написанный 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, не найдено элементов.
Ссылка
https://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::extractfilter()source public static
filter( array $var )
Фильтрация пустых элементов из массива маршрута, исключая '0'.
Параметры
- массив
$var - Массив для фильтрации или значение при использовании обратного вызова
Возвращает
смешанныйОтфильтрованный массив или true/false при использовании обратного вызова
Ссылка
https://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необязательно '.' - Строка, используемая для разделения элементов ключа массива в пути, по умолчанию '.'
Возвращает
массивСсылка
https://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.
Ссылка
https://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 - Данные для вставки
Возвращает
массивСсылка
https://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Иерархический объект
Ссылка
https://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 - Необязательно: номер элемента, который проверяется.
- целое число
$lengthнеобязательно null - Длина.
Возвращает
логическоеСсылка
https://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 - Массив для слияния
Возвращает
массивОбъединённый массив
Ссылка
https://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, разделённые строки будут обрезаны
Возвращает
массивСсылка
https://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::normalizenumeric()source public static
numeric( array $array null )
Проверяет, являются ли все значения в массиве числовыми.
Параметры
- массив
$arrayнеобязательно null - Массив для проверки. Если null, то значение текущего объекта Set
Возвращает
логическоеtrue, если значения являются числовыми, false в противном случае
Ссылка
https://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 - Различия для добавления
Возвращает
массивОбъединённый массив
Ссылка
https://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 из значения
Ссылка
https://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::removereverse()source public static
reverse( object $object )
Преобразует объект в массив.
Параметры
- объект
$object - Объект для преобразования
Возвращает
массивПредставление массива данного объекта
Ссылка
https://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)
Возвращает
массивОтсортированный массив данных
Ссылка
https://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::sort
© 2005–2017 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.10/class-Set.html