Spec-Zone.ru › CakePHP 3.1

Класс Hash

Библиотека функций для массивов, предназначенная для обработки и извлечения данных из массивов или 'наборов' данных.

Hash предоставляет улучшенный интерфейс, более последовательный и предсказуемый набор функций по сравнению с Set. Несмотря на отсутствие точечной поддержки псевдо-XPath, более полная нотация точек обеспечивает аналогичные возможности с более последовательной реализацией.

Пространство имён: Cake\Utility
Ссылка: http://book.cakephp.org/3.0/ru/core-libraries/hash.html
Расположение: Utility/Hash.php

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

_filtersource protected static

_filter( array $var )

Функция обратного вызова для фильтрации.

Параметры

массив $var
Массив для фильтрации.

Возвращает

boolean
bool

_matchTokensource protected static

_matchToken( string $key , string $token )

Проверка ключа на соответствие токену.

Параметры

строка $key
Ключ в массиве, который ищется.
строка $token
Токен, на который проверяется соответствие.

Возвращает

boolean
bool

_matchessource protected static

_matches( array|ArrayAccess $data , string $selector )

Проверяет, соответствует ли $data шаблонам атрибутов

Параметры

массив|ArrayAccess $data
Массив данных для проверки соответствия.
строка $selector
Шаблоны для проверки соответствия.

Возвращает

boolean
Соответствие выражению.

_mergesource protected static

_merge( array $stack , array $return )

Вспомогательная функция для слияния, уменьшающая дублирование кода между merge() и expand().

Параметры

массив $stack
Стек операций для работы.
массив $return
Значение для обработки.

_simpleOpsource protected static

_simpleOp( string $op , array $data , array $path , mixed $values null )

Выполнение простой операции вставки/удаления.

Параметры

строка $op
Операция для выполнения.
массив $data
Данные для обработки.
массив $path
Путь для работы.
смешанный $values необязательный null
Значения для вставки при выполнении операций вставки.

Возвращает

array
данные.

_splitConditionssource protected static

_splitConditions( string $token )

Разделение условий токена

Параметры

строка $token
токен, который разделяется.

Возвращает

array
[токен, условия] с разделенным токеном

_squashsource protected static

_squash( array $data , string|null $key null )

Вспомогательный метод для sort() Сжимает массив в один хеш, чтобы его можно было отсортировать.

Параметры

массив $data
Данные для сжатия.
строка|null $key необязательный null
Ключ для данных.

Возвращает

array
массив

applysource public static

apply( array $data , string $path , callable $function )

Применение функции обратного вызова к набору извлеченных значений с использованием $function. Функция получит извлеченные значения в качестве первого аргумента.

Пример

Вы можете легко подсчитать результаты извлечения, используя apply(). Например, подсчитать комментарии к статье:

$count = Hash::apply($data, 'Article.Comment.{n}', 'count');

Вы также можете использовать функцию, такую как array_sum для суммирования результатов.

$total = Hash::apply($data, '{n}.Item.price', 'array_sum');

Параметры

массив $data
Данные для уменьшения.
строка $path
Путь для извлечения из $data.
вызываемая функция $function
Функция, которая вызывается для каждого извлеченного значения.

Возвращает

mixed
Результаты примененного метода.

checksource public static

check( array $data , string $path )

Проверка существования заданного пути в $data. Этот метод использует тот же синтаксис пути, что и Hash::extract().

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

Параметры

массив $data
Данные для проверки.
строка $path
Путь для проверки.

Возвращает

boolean
Существование пути.

См. также

Cake\Utility\Hash::extract()

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::check

combinesource public static

combine( array $data , string $keyPath , string|null $valuePath null , string|null $groupPath null )

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

Параметры

массив $data
Массив для извлечения ключей и значений
строка $keyPath
Строка с разделителями точек.
строка|null $valuePath необязательный null
Строка с разделителями точек.
строка|null $groupPath необязательный null
Строка с разделителями точек.

Возвращает

array
Объединённый массив

Исключения

RuntimeException
При несовпадении количества ключей и значений.

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::combine

containssource public static

contains( array $data , array $needle )

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

Параметры

массив $data
Данные для поиска.
массив $needle
Значения для файла в $data

Возвращает

boolean
true, если $data содержит $needle, иначе false

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::contains

diffsource public static

diff( array $data , array $compare )

Вычисляет разницу между двумя сложными массивами. Этот метод отличается от встроенной функции array_diff() тем, что сохраняет ключи и работает с многомерными массивами.

Параметры

массив $data
Первое значение
массив $compare
Второе значение

Возвращает

array
Возвращает пары ключ => значение, которые не являются общими в $data и $compare. Выражение для этой функции: ($data - $compare) + ($compare - ($data - $compare))

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::diff
END_OF_DOCUMENT_MARKER

dimensionssource public static

dimensions( array $data )

Подсчитывает размерности массива. Учитывается только размерность первого элемента в массиве.

Если у вас неравномерный или разнородный массив, рассмотрите использование Hash::maxDimensions() для получения размерности массива.

Параметры

массив $data
Массив для подсчёта размерностей

Возвращает

integer
Количество размерностей в $data

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::dimensions

expandsource public static

expand( array $data , string $separator '.' )

Расширяет плоский массив до вложенного массива.

Например, разворачивает массив, который был свёрнут с помощью Hash::flatten() в многомерный массив. Таким образом, ['0.Foo.Bar' => 'Far'] преобразуется в [['Foo' => ['Bar' => 'Far']]].

Параметры

массив $data
Свёрнутый массив
строка $separator необязательно '.'
Разделитель, используемый для разделения элементов

Возвращает

array
массив

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::expand

extractsource public static

extract( array|ArrayAccess $data , string $path )

Получает значения из массива, соответствующие выражению $path. Выражение пути — это выражение, разделённое точкой, которое может содержать набор шаблонов и выражений:

  • {n} Соответствует любому числовому ключу или целому числу.
  • {s} Соответствует любому строковому ключу.
  • {*} Соответствует любому значению.
  • Foo Соответствует любому ключу с точно таким же значением.

Существует ряд операторов атрибутов:
- =, != Равенство. - >, <, >=, <= Сравнение значений. - =/.../ Сопоставление шаблона регулярного выражения.

Учитывая набор данных массива User, из вызова $User->find('all'):

  • 1.User.name Получить имя пользователя с индексом 1.
  • {n}.User.name Получить имя каждого пользователя в наборе пользователей.
  • {n}.User[id] Получить имя каждого пользователя с ключом id.
  • {n}.User[id>=2] Получить имя каждого пользователя с ключом id, большим или равным 2.
  • {n}.User[username=/^paul/] Получить элементы User с именем пользователя, соответствующим ^paul.

Параметры

массив|ArrayAccess $data
Данные для извлечения.
строка $path
Путь для извлечения.

Возвращает

array
Массив извлечённых значений. Возвращает пустой массив, если совпадений нет.

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::extract

filtersource public static

filter( array $data , callable $callback ['self', '_filter'] )

Рекурсивно фильтрует набор данных.

Параметры

массив $data
Массив для фильтрации или значение при использовании обратного вызова
вызываемый объект $callback необязательно ['self', '_filter']
Функция для фильтрации данных. По умолчанию static::_filter() которая удаляет все непустые значения, отличные от нуля.

Возвращает

array
Отфильтрованный массив

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::filter

flattensource public static

flatten( array $data , string $separator '.' )

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

Параметры

массив $data
Массив для сжатия
строка $separator необязательно '.'
Строка, используемая для разделения элементов ключа массива, по умолчанию '.'

Возвращает

array
массив

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::flatten

formatsource public static

format( array $data , array $paths , string $format )

Возвращает отформатированный ряд значений, извлечённых из $data, используя $format в качестве формата и $paths в качестве значений для извлечения.

Использование:

$result = Hash::format($users, ['{n}.User.id', '{n}.User.name'], '%s : %s');

Строка $format может использовать любые параметры формата, которые поддерживают vsprintf() и sprintf().

Параметры

массив $data
Исходный массив для извлечения данных
массив $paths
Массив, содержащий один или несколько путей ключей в стиле Hash::extract()
строка $format
Строка формата, в которую будут вставлены значения, см. sprintf()

Возвращает

array|null
Массив строк, извлечённых из $path и отформатированных с помощью $format

См. также

sprintf()
Cake\Utility\Hash::extract()

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::format

getsource public static

get( array|ArrayAccess $data , string|array $path , mixed $default null )

Получает единственное значение, заданное $path из $data. Не поддерживает полный функционал нотации точки, но быстрее при простых операциях чтения.

Параметры

массив|ArrayAccess $data
Массив данных или объект, реализующий интерфейс \ArrayAccess для работы с ним.
строка|массив $path
Путь, который ищется. Либо строка, разделённая точкой, либо массив сегментов пути.
смешанный $default необязательно null
Возвращаемое значение, когда путь не существует

Возвращает

mixed
Значение, полученное из массива, или null.

Исключения

InvalidArgumentException
\InvalidArgumentException

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::get

insertsource public static

insert( array $data , string $path , array|null $values null )

Вставляет $values в массив с заданным $path. Вы можете использовать элементы {n} и {s} для вставки $data несколько раз.

Параметры

массив $data
Данные для вставки.
строка $path
Путь для вставки.
массив|null $values необязательно null
Значения для вставки.

Возвращает

array
Данные с вставленными $values.

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::insert

mapsource public static

map( array $data , string $path , callable $function )

Применяет обратный вызов ко всем элементам в наборе. Можно указать путь, чтобы изменять только части набора.

Параметры

массив $data
Данные для применения отображения и извлечения данных.
строка $path
Путь для извлечения при отображении.
вызываемый объект $function
Функция, которая будет вызвана для каждого извлеченного значения.

Возвращает

array
Массив измененных значений.

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::map
END_OF_DOCUMENT_MARKER

maxDimensionssource public static

maxDimensions( array $data )

Подсчитывает размерности всех элементов массива. Полезно для нахождения максимального количества размерностей в смешанном массиве.

Параметры

массив $data
Массив для подсчета размерностей

Возвращает

integer
Максимальное количество размерностей в $data

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::maxDimensions

mergesource public static

merge( array $data , mixed $merge )

Эта функция можно рассматривать как гибрид между PHP's array_merge и array_merge_recursive.

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

Примечание: Эта функция будет работать с неограниченным количеством аргументов и преобразует не-массивы в массивы перед слиянием.

Параметры

массив $data
Массив, который будет сливаться
смешанный $merge
Массив, с которым будет сливаться. Аргумент и все последующие аргументы будут преобразованы в массивы при слиянии

Возвращает

array
Объединённый массив

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::merge

mergeDiffsource public static

mergeDiff( array $data , array $compare )

Объединяет разницу между $data и $compare в $data.

Параметры

массив $data
Данные, к которым добавляются изменения.
массив $compare
Данные для сравнения и добавления.

Возвращает

array
Объединенный массив.

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::mergeDiff

nestsource public static

nest( array $data , array $options [] )

Преобразует плоский массив в вложенный массив.

Параметры:

  • children Имя ключа для использования в результате для дочерних элементов.
  • idPath Путь к ключу, который идентифицирует каждый элемент. Должен быть совместим с Hash::extract(). По умолчанию {n}.$alias.id
  • parentPath Путь к ключу, который идентифицирует родительский элемент каждого элемента. Должен быть совместим с Hash::extract(). По умолчанию {n}.$alias.parent_id
  • root Идентификатор желаемого верхнего результата.

Параметры

массив $data
Данные для вложения.
массив $options необязательно []
Параметры:

Возвращает

array
Результат, вложенный в массив

Исключение

InvalidArgumentException
При предоставлении недопустимых данных.

См. также

Cake\Utility\Hash::extract()

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::nest

normalizesource public static

normalize( array $data , boolean $assoc true )

Нормализует массив и преобразует его в стандартный формат.

Параметры

массив $data
Список для нормализации
булево $assoc необязательно true
Если true, $data будет преобразован в ассоциативный массив.

Возвращает

array
массив

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::normalize

numericsource public static

numeric( array $data )

Проверяет, являются ли все значения в массиве числовыми.

Параметры

массив $data
Массив для проверки.

Возвращает

boolean
true, если значения являются числовыми, иначе false

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::numeric

reducesource public static

reduce( array $data , string $path , callable $function )

Сводит набор извлеченных значений с использованием $function.

Параметры

массив $data
Данные для сведения.
строка $path
Путь для извлечения из $data.
вызываемый $function
Функция для вызова каждого извлеченного значения.

Возвращает

mixed
Значение, полученное в результате сведения.

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::reduce

removesource public static

remove( array $data , string $path )

Удаляет данные, соответствующие $path, из массива $data. Можно использовать {n} и {s} для удаления нескольких элементов из $data.

Параметры

массив $data
Данные для обработки
строка $path
Выражение пути для удаления.

Возвращает

array
Измененный массив.

Ссылка

http://book.cakephp.org/3.0/ru/core--libraries/hash.html#Hash::remove

sortsource public static

sort( array $data , string $path , string $dir 'asc' , array|string $type 'regular' )

Сортирует массив по любому значению, определенному путем, совместимым с Set.

Направления сортировки

  • asc Сортировка по возрастанию.
  • desc Сортировка по убыванию.

Типы сортировки

  • regular Для обычной сортировки (типы не изменяются)
  • numeric Сравнивать значения численно
  • string Сравнивать значения как строки
  • natural Сравнивать элементы как строки, используя "естественный порядок" удобным для человека способом. Например, отсортирует foo10 перед foo2.

Для сортировки без учета регистра передайте тип как массив следующим образом:

Hash::sort($data, 'some.attribute', 'asc', ['type' => 'regular', 'ignoreCase' => true]);

При использовании массива, type по умолчанию равен 'обычный'. Параметр ignoreCase по умолчанию равен false.

Параметры

массив $data
Массив данных для сортировки
строка $path
Путь к значению массива, совместимый с Set.
строка $dir необязательно 'asc'
См. направления выше. По умолчанию 'asc'.
массив|строка $type необязательно 'regular'
См. типы направлений выше. По умолчанию 'regular'.

Возвращает

array
Отсортированный массив данных

Ссылка

http://book.cakephp.org/3.0/ru/core-libraries/hash.html#Hash::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/3.1/class-Cake.Utility.Hash.html

Spec-Zone.ru

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