Spec-Zone.ru › CakePHP 4.3

Класс Hash

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

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

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

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

  • _filter() protected static

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

  • _matchToken() protected static

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

  • _matches() protected static

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

  • _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

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

  • 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.

END_OF_DOCUMENT_MARKER

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

_filter() protected static

_filter(mixed $var): bool

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

Параметры

mixed $var

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

Возвращает

bool

_matchToken() protected static

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

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

Параметры

mixed $key

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

string $token

Токен, на который проверяется соответствие.

Возвращает

bool

_matches() protected static

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

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

Параметры

ArrayAccess|array $data

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

string $selector

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

Возвращает

bool

_merge() protected static

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

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

Параметры

array $stack

Стек операций, с которыми нужно работать.

array $return

Значение, с которым нужно работать.

Возвращает

void

_simpleOp() protected static

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

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

Параметры

string $op

Операция, которую нужно выполнить.

array $data

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

array<string> $path

Путь, с которым нужно работать.

mixed $values optional

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

Возвращает

array

_splitConditions() protected static

_splitConditions(string $token): array

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

Параметры

string $token

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

Возвращает

array

_squash() protected static

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

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

Параметры

array $data

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

mixed $key optional

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

Возвращает

array

apply() public static

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

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

Пример

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

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

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

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

Параметры

array $data

Данные для уменьшения.

string $path

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

callable $function

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

Возвращает

mixed

Ссылки

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

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

Параметры

array $data

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

string $path

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

Возвращает

bool

См. также

\Cake\Utility\Hash::extract()

Ссылки

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

combine() public static

combine(array $data, array<string>|string|null $keyPath, array<string>|string|null $valuePath = null, string|null $groupPath = null): array

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

Параметры

array $data

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

array<string>|string|null $keyPath

Строка с точками.

array<string>|string|null $valuePath optional

Строка с точками.

string|null $groupPath optional

Строка с точками.

Возвращает

array

Исключения

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

Ссылки

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

contains() public static

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

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

Параметры

array $data

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

array $needle

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

Возвращает

bool

Ссылки

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() тем, что сохраняет ключи и работает с многомерными массивами.

Параметры

array $data

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

array $compare

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

Возвращает

array

Ссылки

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

dimensions() public static

dimensions(array $data): int

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

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

Параметры

array $data

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

Возвращает

int

Ссылки

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']]].

Параметры

array $data

Плоский массив

string $separator optional

Разделитель, используемый.

Возвращает

array

Ссылки

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

extract() public static

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

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

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

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

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

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

Параметры

ArrayAccess|array $data

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

string $path

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

Возвращает

ArrayAccess|array

Ссылки

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

filter() public static

filter(array $data, callable|array $callback = [Hash::class, '_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, array<string> $paths, string $format): array<string>|null

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

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

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

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

Параметры

array $data

Исходный массив для извлечения данных.

array<string> $paths

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

string $format

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

Возвращает

array<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(ArrayAccess|array $data, array<string>|string|int|null $path, mixed $default = null): mixed

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

Параметры

ArrayAccess|array $data

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

array<string>|string|int|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

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

Различие между этим методом и встроенными заключается в том, что если ключ массива содержит другой массив, то 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<string, mixed> $options = []): array<array>

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

Параметры:

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

Параметры

array $data

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

array<string, mixed> $options optional

Параметры:

Возвращает

array<array>

Исключения

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

См. также

\Cake\Utility\Hash::extract()

Ссылки

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

normalize() public static

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

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

Параметры

array $data

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

bool $assoc optional

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

Возвращает

array

Ссылки

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

numeric() public static

numeric(array $data): bool

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

Параметры

array $data

Проверяемый массив.

Возвращает

bool

Ссылки

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.

Параметры

array $data

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

string $path

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

callable $function

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

Возвращает

mixed

Ссылки

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.

Параметры

array $data

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

string $path

Выражение пути для удаления.

Возвращает

array

Ссылки

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, mixed>|string $type = 'regular'): array

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

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

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

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

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

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

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

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

Параметры

array $data

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

string $path

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

string|int $dir optional

См. направления выше. По умолчанию 'восходящий'.

array<string, mixed>|string $type optional

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

Возвращает

array

Ссылки

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.3/class-Cake.Utility.Hash.html

Spec-Zone.ru

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