Spec-Zone.ru › CakePHP 3.6

Класс Hash

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

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

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

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

  • _filter() защищённый статический
    Функция обратного вызова для фильтрации.
  • _matchToken() защищённый статический
    Проверка ключа на соответствие токену.
  • _matches() защищённый статический
    Проверяет, соответствует ли $data шаблонам атрибутов
  • _merge() защищённый статический
    Функция-помощник для слияния, предназначенная для сокращения дублирования кода между merge() и expand().
  • _simpleOp() защищённый статический
    Выполнение простого вставки/удаления.
  • _splitConditions() защищённый статический
    Разделение условий токена
  • _squash() защищённый статический

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

  • apply() публичный статический

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

  • check() публичный статический

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

  • combine() публичный статический

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

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

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

  • dimensions() публичный статический

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

  • expand() публичный статический
    Расширяет плоский массив вложенным массивом.
  • extract() публичный статический

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

  • filter() публичный статический
    Рекурсивно фильтрует набор данных.
  • flatten() публичный статический

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

  • format() публичный статический

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

  • get() публичный статический

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

  • insert() публичный статический

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

  • map() публичный статический

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

  • maxDimensions() публичный статический

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

  • merge() публичный статический
    Эта функция может быть рассмотрена как гибрид между PHP's array_merge и array_merge_recursive.
  • mergeDiff() публичный статический
    Сливает разницу между $data и $compare в $data.
  • nest() публичный статический
    Принимает плоский массив и возвращает вложенный массив
  • normalize() публичный статический
    Нормализует массив и преобразует его в стандартный формат.
  • numeric() публичный статический
    Проверяет, являются ли все значения в массиве числовыми
  • reduce() публичный статический
    Сводит набор извлечённых значений с использованием $function.
  • remove() публичный статический

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

  • sort() публичный статический
    Сортирует массив по любому значению, определяемому совместимым с Set путём

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

_filter()source защищённый статический

_filter( mixed $var )

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

Параметры

смешанный $var
Массив для фильтрации.

Возвращает

boolean

_matchToken()source защищённый статический

_matchToken( string $key , string $token )

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

Параметры

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

Возвращает

boolean

_matches()source защищённый статический

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

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

Параметры

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

Возвращает

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

_merge()source защищённый статический

_merge( array $stack , array $return )

Функция-помощник для слияния, предназначенная для сокращения дублирования кода между merge() и expand().

Параметры

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

_simpleOp()source protected static

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

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

Параметры

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

Возвращает

массив
данные.

_splitConditions()source protected static

_splitConditions( string $token )

Разделить условия токена.

Параметры

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

Возвращает

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

_squash()source protected static

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

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

Параметры

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

Возвращает

массив

apply()source 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
Функция для вызова для каждого извлеченного значения.

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::apply

check()source public static

check( array $data , string $path )

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

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

Параметры

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

Возвращает

логическое значение
Существование пути.

См. также

\Cake\Utility\Hash::extract()

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::check

combine()source 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
Строка, разделенная точками.

Возвращает

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

Исключения

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::combine

contains()source public static

contains( array $data , array $needle )

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

Параметры

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

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::contains

diff()source public static

diff( array $data , array $compare )

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

Параметры

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

Возвращает

массив

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


Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::diff

dimensions()source public static

dimensions( array $data )

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

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

Параметры

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

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::dimensions

expand()source public static

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

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

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

Параметры

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

Возвращает

массив

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::expand

extract()source public static

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

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

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

Существует ряд операторов атрибутов:

  • =, != Равенство.
  • >, <, >=, <= Сравнение значений.
  • =/.../ Сопоставление с образцом регулярного выражения.

Предположим набор данных массива Пользователи, полученный из вызова $User->find('all'):

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

Параметры

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

Возвращает

массив|ArrayAccess

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


Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::extract

filter()source public static

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

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

Параметры

массив $data
Массив для фильтрации или значение при использовании обратного вызова
обратный вызов|массив $callback необязательный ['self', '_filter']

Функция для фильтрации данных. По умолчанию static::_filter(), которая удаляет все непустые значения, отличные от нуля.

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::filter

flatten()source public static

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

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

Параметры

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

Возвращает

массив

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::flatten

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

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::format

См. также

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

get()source public static

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

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

Параметры

массив|ArrayAccess $data

Массив данных или объект, реализующий интерфейс \ArrayAccess, для работы.

строка|массив $path

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

смешанный $default необязательный null
Возвращаемое значение, когда путь не найден

Возвращает

смешанный
Извлеченное из массива значение или null.

Выбрасывает

InvalidArgumentException

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::get

insert()source public static

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

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

Параметры

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

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::insert

map()source public static

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

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

Параметры

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

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::map

maxDimensions()source public static

maxDimensions( array $data )

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

Параметры

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

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::maxDimensions

merge()source public static

merge( array $data , mixed $merge )

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

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

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

Параметры

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

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::merge

mergeDiff()source public static

mergeDiff( array $data , array $compare )

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

Параметры

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

Возвращает

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::mergeDiff

nest()source public static

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

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

Параметры:

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

Параметры

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

Возвращает

массив
Вложенные результаты

Выбрасывает

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

См. также

\Cake\Utility\Hash::extract()

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::nest

normalize()source public static

normalize( array $data , boolean $assoc = true )

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

Параметры

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

Возвращает

массив

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::normalize

numeric()source public static

numeric( array $data )

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

Параметры

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

Возвращаемое значение

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::numeric

reduce()source public static

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

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

Параметры

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

Возвращаемое значение

mixed
Сведенное значение.

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::reduce

remove()source public static

remove( array $data , string $path )

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

Параметры

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

Возвращаемое значение

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::remove

sort()source public static

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

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

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

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

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

  • regular Для обычной сортировки (без изменения типов).
  • numeric Сравнение значений в числовом формате.
  • string Сравнение значений как строк.
  • locale Сравнение элементов как строк, основываясь на текущем языке.
  • 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'.

Возвращаемое значение

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

Ссылка

https://book.cakephp.org/3.0/ru/core-libraries/hash.html#Cake\Utility\Hash::sort

© 2005–present 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/3.6/class-Cake.Utility.Hash.html

Spec-Zone.ru

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