Класс Hash
Библиотека функций для массивов, предназначенных для обработки и извлечения данных из массивов или наборов данных.
Hash предоставляет улучшенный интерфейс, более согласованный и предсказуемый набор функций по сравнению с Set. Несмотря на отсутствие точечной поддержки псевдо-XPath, более полная функциональность с использованием нотации точек обеспечивает аналогичные возможности в более согласованной реализации.
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT Лицензия
Расположение Cake/Utility/Hash.php
Подробное описание метода
_filtersource protected static
_filter( array $var )
Функция обратного вызова для фильтрации.
Параметры
- массив
$var - Массив для фильтрации.
Возвращает
booleanbool
_matchTokensource protected static
_matchToken( string $key , string $token )
Проверка ключа на соответствие токену.
Параметры
- строка
$key - Ключ в массиве, который ищется.
- строка
$token - Токен, на соответствие которому проверяется.
Возвращает
booleanbool
_matchessource protected static
_matches( array $data , string $selector )
Проверяет, соответствует ли $data заданным шаблонам.
Параметры
- массив
$data - Массив данных для проверки.
- строка
$selector - Шаблоны для проверки.
Возвращает
booleanСоответствие выражению.
_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 $key null )
Вспомогательный метод для sort(). Сжимает массив в единый хеш, чтобы его можно было отсортировать.
Параметры
- массив
$data - Данные для сжатия.
- строка
$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Существование пути.
См. также
Hash::extract()Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::checkcombinesource public static
combine( array $data , string $keyPath , string $valuePath null , string $groupPath null )
Создает ассоциативный массив, используя $keyPath в качестве пути для построения ключей и, необязательно, $valuePath в качестве пути для получения значений. Если $valuePath не указан, все значения будут инициализированы как null (полезно для Hash::merge). Вы можете дополнительно сгруппировать значения по результатам следования пути, указанному в $groupPath.
Параметры
- массив
$data - Массив, из которого нужно извлечь ключи и значения.
- строка
$keyPath - Строка, разделенная точками.
- строка
$valuePathнеобязательно null - Строка, разделенная точками.
- строка
$groupPathнеобязательно null - Строка, разделенная точками.
Возвращает
arrayОбъединенный массив
Исключения
CakeExceptionCakeException, когда количество ключей и значений не совпадает.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::combinecontainssource public static
contains( array $data , array $needle )
Определяет, содержит ли один массив точные ключи и значения другого.
Параметры
- массив
$data - Данные, в которых нужно искать.
- массив
$needle - Значения, которые нужно искать в $data
Возвращает
booleantrue, если $data содержит $needle, иначе false
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::containsdiffsource public static
diff( array $data , array $compare )
Вычисляет разницу между двумя сложными массивами. Этот метод отличается от встроенной функции array_diff() тем, что сохраняет ключи и работает с многомерными массивами.
Параметры
- массив
$data - Первое значение
- массив
$compare - Второе значение
Возвращает
arrayВозвращает пары ключ => значение, которые не являются общими в $data и $compare. Выражение для этой функции: ($data - $compare) + ($compare - ($data - $compare))
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::diffdimensionssource public static
dimensions( array $data )
Подсчитывает размерности массива. Учитывает только размерность первого элемента в массиве.
Если у вас неравномерный или разнородный массив, рассмотрите использование Hash::maxDimensions() для получения размерностей массива.
Параметры
- массив
$data - Массив для подсчета размерностей.
Возвращает
integerКоличество размерностей в $data
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::dimensionsexpandsource public static
expand( array $data , string $separator '.' )
Расширяет плоский массив в вложенный массив.
Например, разворачивает массив, который был свернут с помощью Hash::flatten() в многомерный массив. Таким образом, array('0.Foo.Bar' => 'Far') преобразуется в array(array('Foo' => array('Bar' => 'Far'))).
Параметры
- массив
$data - Плоский массив
- строка
$separatorнеобязательно '.' - Разделитель, используемый
Возвращает
arrayмассив
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::expandextractsource public static
extract( array $data , string $path )
Извлекает значения из массива, соответствующие выражению $path. Выражение пути — это выражение, разделенное точками, которое может содержать набор шаблонов и выражений:
-
{n}Соответствует любому числовому ключу или целому числу. -
{s}Соответствует любому строковому ключу. -
{*}Соответствует любому значению. -
FooСоответствует любому ключу с точно таким же значением.
Существует ряд операторов атрибутов:
- =, != Равенство. - >, <, >=, <= Сравнение значений. - =/.../ Сопоставление шаблона с регулярным выражением.
В данном наборе данных пользователя, полученных из вызова $User->find('all'):
-
1.User.nameПолучить имя пользователя под индексом 1. -
{n}.User.nameПолучить имя каждого пользователя во всем наборе пользователей. -
{n}.User[id]Получить имя каждого пользователя с ключом id. -
{n}.User[id>=2]Получить имя каждого пользователя с ключом id, большим или равным 2. -
{n}.User[username=/^paul/]Получить элементы пользователя с именем пользователя, соответствующим^paul.
Параметры
- массив
$data - Данные для извлечения.
- строка
$path - Путь для извлечения.
Возвращает
arrayМассив извлечённых значений. Возвращает пустой массив, если совпадений нет.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::extractfiltersource public static
filter( array $data , callable $callback array('self', '_filter') ) Рекурсивно фильтрует набор данных.
Параметры
- массив
$data - Массив для фильтрации или значение при использовании обратного вызова
- вызываемый объект
$callbackнеобязательно массив('self', '_filter') - Функция для фильтрации данных. По умолчанию
static::_filter()которая удаляет все непустые значения, отличные от нуля.
Возвращает
arrayОтфильтрованный массив
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::filterflattensource public static
flatten( array $data , string $separator '.' )
Сворачивает многомерный массив в одномерный, используя путь к ключу массива с разделителями для каждого элемента массива, т.е. массив(массив('Foo' => массив('Bar' => 'Far'))) превращается в массив('0.Foo.Bar' => 'Far').)
Параметры
- массив
$data - Массив для сжатия
- строка
$separatorнеобязательно '.' - Строка, используемая для разделения элементов ключей массива в пути, по умолчанию — '.'
Возвращает
arrayмассив
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::flattenformatsource public static
format( array $data , array $paths , string $format )
Возвращает отформатированный ряд значений, извлечённых из $data, используя $format в качестве формата и $paths в качестве значений для извлечения.
Использование:
$result = Hash::format($users, array('{n}.User.id', '{n}.User.name'), '%s : %s');
Строка $format может использовать любые параметры форматирования, которые поддерживают функции vsprintf() и sprintf().
Параметры
- массив
$data - Исходный массив, из которого извлекаются данные
- массив
$paths - Массив, содержащий один или несколько путей ключей в стиле Hash::extract()
- строка
$format - Строка формата, в которую будут вставлены значения, см. sprintf()
Возвращает
arrayМассив строк, извлечённых из
$path и отформатированных с помощью $formatСм. также
sprintf()Hash::extract()Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::formathttp://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::format
getsource public static
get( array $data , string|array $path , mixed $default null )
Получение единственного значения, указанного в $path, из $data. Не поддерживает полный набор функций с использованием нотации с точками, но быстрее для простых операций чтения.
Параметры
- массив
$data - Массив данных для обработки.
- строка|массив
$path - Путь, который ищется. Либо строка, разделённая точками, либо массив сегментов пути.
- смешанный
$defaultнеобязательно null - Возвращаемое значение, если путь не существует
Возвращает
mixedИзвлечённое из массива значение или null.
Вызывает
InvalidArgumentExceptionInvalidArgumentException
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::getinsertsource public static
insert( array $data , string $path , mixed $values null )
Вставка $values в массив по заданному $path. Можно использовать элементы {n} и {s} для вставки $data несколько раз.
Параметры
- массив
$data - Данные, в которые нужно вставить.
- строка
$path - Путь для вставки.
- смешанный
$valuesнеобязательно null - Значения для вставки.
Возвращает
arrayДанные с вставленными $values.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::insertmapsource public static
map( array $data , string $path , callable $function )
Применяет обратный вызов к каждому элементу набора. Можно указать путь для модификации только определённых слайсов набора.
Параметры
- массив
$data - Данные для применения отображения и извлечения данных.
- строка
$path - Путь для извлечения для отображения.
- вызываемый объект
$function - Функция, которая вызывается для каждого извлечённого значения.
Возвращает
arrayМассив изменённых значений.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::mapmaxDimensionssource public static
maxDimensions( array $data )
Подсчитывает количество измерений всех элементов массива. Полезно для определения максимального количества измерений в смешанном массиве.
Параметры
- массив
$data - Массив для подсчёта измерений
Возвращает
integerМаксимальное количество измерений в $data
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::maxDimensionsmergesource 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/2.0/ru/core-utility-libraries/hash.html#Hash::mergemergeDiffsource public static
mergeDiff( array $data , array $compare )
Объединяет разницу между $data и $compare в $data.
Параметры
- массив
$data - Данные, к которым будет добавлен результат.
- массив
$compare - Данные для сравнения и добавления.
Возвращаемое значение
arrayОбъединённый массив.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::mergeDiffnestsource public static
nest( array $data , array $options array() )
Преобразует плоский массив в вложенный.
Параметры:
-
childrenИмя ключа для дочерних элементов в результирующем массиве. -
idPathПуть к ключу, определяющему каждый элемент. Должен быть совместим с Hash::extract(). По умолчанию{n}.$alias.id. -
parentPathПуть к ключу, определяющему родительский элемент каждого элемента. Должен быть совместим с Hash::extract(). По умолчанию{n}.$alias.parent_id. -
rootID желаемого верхнего результата.
Параметры
- массив
$data - Данные для вложения.
- массив
$optionsнеобязательно array() - Опции:
Возвращаемое значение
arrayВложенный массив результатов
Возможные исключения
InvalidArgumentExceptionПри предоставлении некорректных данных.
См. также
Hash::extract()Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::nestnormalizesource public static
normalize( array $data , boolean $assoc true )
Нормализует массив и преобразует его в стандартный формат.
Параметры
- массив
$data - Список для нормализации
- логическое
$assocнеобязательно true - Если true, $data будет преобразован в ассоциативный массив.
Возвращаемое значение
arrayмассив
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::normalizenumericsource public static
numeric( array $data )
Проверяет, являются ли все значения в массиве числовыми.
Параметры
- массив
$data - Массив для проверки.
Возвращаемое значение
booleantrue, если значения являются числовыми, иначе false
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::numericreducesource public static
reduce( array $data , string $path , callable $function )
Применяет функцию к набору извлечённых значений используя $function.
Параметры
- массив
$data - Данные для уменьшения.
- строка
$path - Путь для извлечения из $data.
- обратный вызов
$function - Функция, которая вызывается для каждого извлечённого значения.
Возвращаемое значение
mixedСведённое значение.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::reduceremovesource public static
remove( array $data , string $path )
Удаляет данные, соответствующие $path, из массива $data. Можно использовать {n} и {s} для удаления нескольких элементов из $data.
Параметры
- массив
$data - Данные, над которыми выполняется операция
- строка
$path - Выражение пути для удаления.
Возвращаемое значение
arrayИзменённый массив.
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-libraries/hash.html#Hash::removesortsource public static
sort( array $data , string $path , string $dir 'asc' , string $type 'regular' )
Сортирует массив по любому значению, определяемому совместимым с Set путём.
Направления сортировки
-
ascСортировка по возрастанию. -
descСортировка по убыванию.
Типы сортировки
-
regularДля обычной сортировки (не менять типы) -
numericСортировать значения численно -
stringСортировать значения как строки -
naturalСортировать элементы как строки с использованием "естественного упорядочения" в удобном для человека формате. Например, отсортирует foo10 перед foo2. Требует PHP 5.4 или выше, иначе вернёт 'обычную' сортировку.
Параметры
- массив
$data - Массив данных для сортировки
- строка
$path - Совместимый с Set путь к значению в массиве
- строка
$dirнеобязательно 'asc' - См. направления выше. По умолчанию 'asc'.
- строка
$typeнеобязательно 'regular' - См. типы сортировки выше. По умолчанию 'regular'.
Возвращаемое значение
arrayОтсортированный массив данных
Ссылка
http://book.cakephp.org/2.0/ru/core-utility-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/2.7/class-Hash.html