Spec-Zone.ru › CakePHP 4.2

Класс Hash

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

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

Пространство имен: Cake\Utility
Ссылка: https://book.cakephp.org/4/en/core-libraries/hash.html

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

  • _filter() protected static

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

  • _matchToken() protected static

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

  • _matches() protected static

    Проверяет, соответствуют ли данные шаблонам атрибутов

  • _merge() protected static

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

  • _simpleOp() protected static

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

  • _splitConditions() protected static

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

  • _squash() protected static

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

  • apply() public static

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

  • check() public static

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

  • combine() public static

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

  • contains() public static

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

  • diff() public static

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

  • dimensions() public static

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

  • expand() public static

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

  • extract() public static

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

  • filter() public static

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

  • flatten() public static

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

  • format() public static

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

  • get() public static

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

  • insert() public static

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

  • map() public static

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

  • maxDimensions() public static

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

  • merge() public static

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

  • mergeDiff() public static

    Сливает разницу между $data и $compare в $data.

  • nest() public static

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

  • normalize() public static

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

  • numeric() public static

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

  • reduce() public static

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

  • remove() public static

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

  • sort() public static

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

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

_filter() protected static

_filter(mixed $var): bool

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

Parameters

mixed $var

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

Returns

bool

_matchToken() protected static

_matchToken(mixed $key, string $token): bool

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

Parameters

mixed $key

Ключ в массиве, который проверяется.

string $token

Проверяемый токен.

Returns

bool

_matches() protected static

_matches(arrayArrayAccess $data, string $selector): bool

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

Parameters

arrayArrayAccess $data

Массив данных для сравнения.

string $selector

Шаблоны для сравнения.

Returns

bool

_merge() protected static

_merge(array $stack, array $return): void

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

Parameters

array $stack

Стек операций для работы.

array $return

Возвращаемое значение для работы.

Returns

void

_simpleOp() protected static

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

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

Parameters

string $op

Операция для выполнения.

array $data

Данные для работы.

string[] $path

Путь для работы.

mixed $values optional

Значения для вставки при выполнении вставок.

Returns

array

_splitConditions() protected static

_splitConditions(string $token): array

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

Parameters

string $token

Разделяемый токен.

Returns

array

_squash() protected static

_squash(array $data, mixed $key = null): array

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

Parameters

array $data

Данные для сжатия.

mixed $key optional

Ключ для данных.

Returns

array

apply() public static

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

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

Example

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

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

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

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

Parameters

array $data

Данные для сокращения.

string $path

Путь для извлечения из $data.

callable $function

Функция, вызываемая для каждого извлеченного значения.

Returns

mixed

Links

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

check() public static

check(array $data, string $path): bool

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

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

Parameters

array $data

Данные для проверки.

string $path

Путь для проверки.

Returns

bool

See Also

\Cake\Utility\Hash::extract()

Links

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

combine() public static

combine(array $data, string|string[]|null $keyPath, string|string[]|null $valuePath = null, string|null $groupPath = null): array

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

Parameters

array $data

Массив, из которого извлекаются ключи и значения

string|string[]|null $keyPath

Строка, разделенная точками.

string|string[]|null $valuePath optional

Строка, разделенная точками.

string|null $groupPath optional

Строка, разделенная точками.

Returns

array

Throws

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

Links

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

contains() public static

contains(array $data, array $needle): bool

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

Parameters

array $data

Данные для поиска.

array $needle

Значения для поиска в $data

Returns

bool

Links

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

diff() public static

diff(array $data, array $compare): array

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

Parameters

array $data

Первое значение

array $compare

Второе значение

Returns

array

Links

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

dimensions() public static

dimensions(array $data): int

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

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

Parameters

array $data

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

Returns

int

Links

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

expand() public static

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

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

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

Parameters

array $data

Сжатый массив

string $separator optional

Используемый разделитель

Returns

array

Links

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

extract() public static

extract(arrayArrayAccess $data, string $path): arrayArrayAccess

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

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

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

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

Учитывая набор данных массива User из вызова $usersTable->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/] Получить элементы User с именем пользователя, соответствующим ^paul.
  • {n}.User[id=1].name Получить имя пользователя с id, соответствующим 1.

Параметры

arrayArrayAccess $data

Данные, из которых нужно извлечь информацию.

string $path

Путь для извлечения.

Возвращает

arrayArrayAccess

Ссылки

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

filter() public static

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

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

Параметры

array $data

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

callable|array $callback optional

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

Возвращает

array

Ссылки

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

flatten() public static

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

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

Параметры

array $data

Массив для сжатия.

string $separator optional

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

Возвращает

array

Ссылки

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

format() public static

format(array $data, string[] $paths, string $format): string[]|null

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

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

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

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

Параметры

array $data

Исходный массив, из которого извлекаются данные.

string[] $paths

Массив, содержащий один или несколько путей ключей в стиле Hash::extract()

string $format

Строка формата, в которую будут вставлены значения, см. sprintf()

Возвращает

string[]|null

См. также

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

Ссылки

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

get() public static

get(arrayArrayAccess $data, string|int|string[]|null $path, mixed $default = null): mixed

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

Параметры

arrayArrayAccess $data

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

string|int|string[]|null $path

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

mixed $default optional

Возвращаемое значение, когда путь не существует.

Возвращает

mixed

Вызывает исключение

InvalidArgumentException

Ссылки

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

insert() public static

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

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

Параметры

array $data

Данные для вставки.

string $path

Путь для вставки.

mixed $values optional

Значения для вставки.

Возвращает

array

Ссылки

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

map() public static

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

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

Параметры

array $data

Данные, для которых выполняется сопоставление и извлечение данных.

string $path

Путь для извлечения для сопоставления.

callable $function

Функция, вызываемая для каждого извлеченного значения.

Возвращает

array

Ссылки

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

maxDimensions() public static

maxDimensions(array $data): int

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

Параметры

array $data

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

Возвращает

int

Ссылки

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

merge() public static

merge(array $data, mixed $merge): array

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

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

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

Параметры

array $data

Массив, который нужно объединить.

mixed $merge

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

Возвращает

array

Ссылки

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

mergeDiff() public static

mergeDiff(array $data, array $compare): array

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

Параметры

array $data

Данные, к которым нужно добавить.

array $compare

Данные для сравнения и добавления.

Возвращает

array

Ссылки

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

nest() public static

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

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

Options:

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

Parameters

array $data

Данные для вложения.

array $options optional

Параметры:

Returns

array[]

Throws

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

See Also

\Cake\Utility\Hash::extract()

Links

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

normalize() public static

normalize(array $data, bool $assoc = true): array

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

Parameters

array $data

Список для нормализации

bool $assoc optional

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

Returns

array

Links

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

numeric() public static

numeric(array $data): bool

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

Parameters

array $data

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

Returns

bool

Links

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

reduce() public static

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

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

Parameters

array $data

Данные для сокращения.

string $path

Путь для извлечения из $data.

callable $function

Функция, вызываемая для каждого извлеченного значения.

Returns

mixed

Links

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

remove() public static

remove(array $data, string $path): array

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

Parameters

array $data

Данные для обработки

string $path

Выражение пути для использования при удалении.

Returns

array

Links

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

sort() public static

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

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

Sort directions

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

Sort types

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

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

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

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

Parameters

array $data

Массив данных для сортировки

string $path

Путь, совместимый с Set, к значению массива

string|int $dir optional

См. направления выше. По умолчанию 'asc'.

array|string $type optional

См. типы направлений выше. По умолчанию 'regular'.

Returns

array

Links

https://book.cakephp.org/4/en/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/4.2/class-Cake.Utility.Hash.html

Spec-Zone.ru

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