Spec-Zone.ru › CakePHP 2.10

Класс Set

Класс, используемый для работы с массивами.

Пакет: Cake\Utility
Устаревший: 3.0.0 Будет удален в 3.0. Используйте вместо него Hash.
Авторские права: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
Лицензия: MIT License
Расположение: Cake/Utility/Set.php

Краткое описание методов

  • _flatten() protected static
    Уплощает массив для сортировки
  • _map() protected static

    Преобразует значение в объект. Если $value — объект, возвращает $value. В противном случае преобразует $value в объект типа $class и, если первичный, присваивает имя $key первому массиву. Если $value не пустой, он будет использован для установки свойств возвращаемого объекта (рекурсивно). Если $key — числовой, структура массива сохраняется

  • apply() public static

    Позволяет применить метод обратного вызова к элементам массива, извлечённым по пути, совместимому с Set::extract().

  • check() public static
    Проверяет, установлен ли определённый путь в массиве
  • classicExtract() public static

    Извлекает значение из массива или объекта, используя синтаксис пути массива, например: "{n}.Person.{[a-z]+}" — где "{n}" представляет числовой ключ, "Person" — строковое значение, а "{[a-z]+}" (т. е. любая строковая константа, заключённая в скобки, кроме {n} и {s}) интерпретируется как регулярное выражение.

  • combine() public static

    Создаёт ассоциативный массив, используя $path1 в качестве пути для создания ключей и необязательно $path2 в качестве пути для получения значений. Если $path2 не указан, все значения будут инициализированы как null (полезно для Set::merge). Необязательно можно сгруппировать значения, используя значения, полученные при использовании пути, указанного в $groupPath.

  • contains() public static
    Определяет, содержит ли один Set или массив точные ключи и значения другого.
  • countDim() public static

    Подсчитывает размерности массива. Если $all установлен в false (по умолчанию), он будет учитывать только размерность первого элемента в массиве.

  • diff() public static
    Вычисляет разницу между Set и массивом, двумя Sets или двумя массивами
  • enum() public static
    Возвращает значение из списка массива, если ключ существует.
  • expand() public static
    Расширяет/раскладывает строку в массив
  • extract() public static

    Реализует частичную поддержку XPath 2.0. Если $path не содержит «/», вызов делегируется Set::classicExtract(). Также аргументы $path и $data обратимы.

  • filter() public static
    Фильтрует пустые элементы из массива маршрутов, исключая '0'.
  • flatten() public static

    Сжимает многомерный массив в одномерный, используя путь массива с разделителем для каждого ключа элемента массива, например, array(array('Foo' => array('Bar' => 'Far'))) становится array('0.Foo.Bar' => 'Far').

  • format() public static
    Возвращает ряд значений, извлеченных из массива, отформатированных в строке формата.
  • get() public static
    Возвращает значение в указанной позиции
  • insert() public static
    Вставляет $data в массив, как определено в $path.
  • map() public static

    Преобразует содержимое объекта Set в иерархию объектов. Числовые ключи сохраняются как массивы объектов.

  • matches() public static
    Эта функция может использоваться для проверки, соответствует ли один элемент или заданный xpath определённым условиям.
  • merge() public static

    Эта функция можно рассматривать как гибрид между PHP array_merge и array_merge_recursive. Разница в том, что если ключ массива содержит другой массив, функция работает рекурсивно (в отличие от array_merge), но не делает этого для ключей, содержащих строки (в отличие от array_merge_recursive).

  • nest() public static
    Принимает плоский массив и возвращает вложенный массив
  • normalize() public static
    Нормализует строку или список массивов.
  • numeric() public static
    Проверяет, являются ли все значения в массиве числовыми
  • pushDiff() public static
    Добавляет различия в $array2 в конец $array
  • remove() public static
    Удаляет элемент из Set или массива, как определено в $path.
  • reverse() public static
    Преобразует объект в массив.
  • sort() public static
    Сортирует массив по любому значению, определяемому совместимым с 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::apply

check()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::check

classicExtract()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::classicExtract

combine()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::combine

contains()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::contains

countDim()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::countDim

diff()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::diff

enum()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::enum

expand()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::extract

filter()source public static

filter( array $var )

Фильтрация пустых элементов из массива маршрута, исключая '0'.

Параметры

массив $var
Массив для фильтрации или значение при использовании обратного вызова

Возвращает

смешанный
Отфильтрованный массив или true/false при использовании обратного вызова

Ссылка

https://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::filter

flatten()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::flatten

format()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::format

get()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::insert

map()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::map

matches()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::matches

merge()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::merge

nest()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::normalize

numeric()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::numeric

pushDiff()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::pushDiff

remove()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::remove

reverse()source public static

reverse( object $object )

Преобразует объект в массив.

Параметры

объект $object
Объект для преобразования

Возвращает

массив
Представление массива данного объекта

Ссылка

https://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::reverse

sort()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

Spec-Zone.ru

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