Spec-Zone.ru › CakePHP 2.7

Класс Hash

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

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

Пакет: Cake\Utility
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT Лицензия
Расположение Cake/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 $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::check

combinesource 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
Объединенный массив

Исключения

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

Ссылка

http://book.cakephp.org/2.0/ru/core-utility-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/2.0/ru/core-utility-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/2.0/ru/core-utility-libraries/hash.html#Hash::diff

dimensionssource public static

dimensions( array $data )

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

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

Параметры

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

Возвращает

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

Ссылка

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

expandsource 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::expand

extractsource 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::extract

filtersource 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::filter

flattensource 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::flatten

formatsource 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::format
http://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.

Вызывает

InvalidArgumentException
InvalidArgumentException

Ссылка

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

insertsource 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::insert

mapsource 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::map

maxDimensionssource public static

maxDimensions( array $data )

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

Параметры

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

Возвращает

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

Ссылка

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

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/2.0/ru/core-utility-libraries/hash.html#Hash::merge

mergeDiffsource 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::mergeDiff

nestsource public static

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

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

Параметры:

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

Параметры

массив $data
Данные для вложения.
массив $options необязательно array()
Опции:

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

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

Возможные исключения

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

См. также

Hash::extract()

Ссылка

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

normalizesource 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::normalize

numericsource public static

numeric( array $data )

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

Параметры

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

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

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

Ссылка

http://book.cakephp.org/2.0/ru/core-utility-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/2.0/ru/core-utility-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/2.0/ru/core-utility-libraries/hash.html#Hash::remove

sortsource 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

Spec-Zone.ru

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