Класс yii\helpers\BaseArrayHelper
| Наследование | yii\helpers\BaseArrayHelper |
|---|---|
| Подклассы | yii\helpers\ArrayHelper |
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/helpers/BaseArrayHelper.php |
BaseArrayHelper предоставляет конкретное реализацию для yii\helpers\ArrayHelper.
Не используйте BaseArrayHelper. Используйте yii\helpers\ArrayHelper вместо этого.
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| filter() | Фильтровать массив по указанным правилам. | yii\helpers\BaseArrayHelper |
| getColumn() | Возвращает значения указанного столбца в массиве. | yii\helpers\BaseArrayHelper |
| getValue() | Извлекает значение элемента массива или свойства объекта с заданным ключом или именем свойства. | yii\helpers\BaseArrayHelper |
| htmlDecode() | Декодирует HTML-сущности в соответствующие символы в массиве строк. | yii\helpers\BaseArrayHelper |
| htmlEncode() | Кодирует специальные символы в массиве строк в HTML-сущности. | yii\helpers\BaseArrayHelper |
| index() | Индексирует и/или группирует массив по указанному ключу. | yii\helpers\BaseArrayHelper |
| isAssociative() | Возвращает значение, указывающее, является ли заданный массив ассоциативным массивом. | yii\helpers\BaseArrayHelper |
| isIn() | Проверяет, содержит ли массив или Traversable элемент. | yii\helpers\BaseArrayHelper |
| isIndexed() | Возвращает значение, указывающее, является ли заданный массив индексированным массивом. | yii\helpers\BaseArrayHelper |
| isSubset() | Проверяет, является ли массив или Traversable подмножеством другого массива или Traversable. | yii\helpers\BaseArrayHelper |
| isTraversable() | Проверяет, является ли переменная массивом или Traversable. | yii\helpers\BaseArrayHelper |
| keyExists() | Проверяет, содержит ли заданный массив указанный ключ. | yii\helpers\BaseArrayHelper |
| map() | Создаёт карту (пары ключ-значение) из многомерного массива или массива объектов. | yii\helpers\BaseArrayHelper |
| merge() | Рекурсивно объединяет два или более массивов в один. | yii\helpers\BaseArrayHelper |
| multisort() | Сортирует массив объектов или массивов (с одинаковой структурой) по одному или нескольким ключам. | yii\helpers\BaseArrayHelper |
| remove() | Удаляет элемент из массива и возвращает его значение. Если ключ не существует в массиве, возвращается значение по умолчанию. | yii\helpers\BaseArrayHelper |
| removeValue() | Удаляет элементы с совпадающими значениями из массива и возвращает удалённые элементы. | yii\helpers\BaseArrayHelper |
| toArray() | Преобразует объект или массив объектов в массив. | yii\helpers\BaseArrayHelper |
Подробное описание методов
filter() public static method (available since version 2.0.9)
Фильтрация массива по заданным правилам.
Например:
$array = [
'A' => [1, 2],
'B' => [
'C' => 1,
'D' => 2,
],
'E' => 1,
];
$result = \yii\helpers\ArrayHelper::filter($array, ['A']);
// $result will be:
// [
// 'A' => [1, 2],
// ]
$result = \yii\helpers\ArrayHelper::filter($array, ['A', 'B.C']);
// $result will be:
// [
// 'A' => [1, 2],
// 'B' => ['C' => 1],
// ]
$result = \yii\helpers\ArrayHelper::filter($array, ['B', '!B.C']);
// $result will be:
// [
// 'B' => ['D' => 2],
// ]
| public static array filter ( $array, $filters ) | ||
|---|---|---|
| $array | array |
Исходный массив |
| $filters | array |
Правила, определяющие ключи массива, которые должны остаться или быть удалены из результатов. Каждое правило:
|
| return | array |
Отфильтрованный массив |
getColumn() public static method
Возвращает значения указанного столбца в массиве.
Входной массив должен быть многомерным или массивом объектов.
Например,
$array = [
['id' => '123', 'data' => 'abc'],
['id' => '345', 'data' => 'def'],
];
$result = ArrayHelper::getColumn($array, 'id');
// the result is: ['123', '345']
// using anonymous function
$result = ArrayHelper::getColumn($array, function ($element) {
return $element['id'];
});
| public static array getColumn ( $array, $name, $keepKeys = true ) | ||
|---|---|---|
| $array | array | |
| $name | string|Closure | |
| $keepKeys | boolean |
Сохранять ли ключи массива. Если false, результирующий массив будет переиндексирован целыми числами. |
| return | array |
Список значений столбца |
getValue() public static method
Извлекает значение элемента массива или свойства объекта с заданным ключом или именем свойства.
Если ключ не существует в массиве или объекте, возвращается значение по умолчанию.
Ключ может быть указан в формате точки, чтобы получить значение подмассива или свойства вложенного объекта. В частности, если ключ равен x.y.z, то возвращаемое значение будет $array['x']['y']['z'] или $array->x->y->z (если $array является объектом). Если $array['x'] или $array->x не является массивом или объектом, возвращается значение по умолчанию. Обратите внимание, что если массив уже содержит элемент x.y.z, то его значение будет возвращено вместо перебора подмассивов. Поэтому лучше указывать массив имён ключей, как ['x', 'y', 'z'].
Ниже приведены примеры использования,
// working with array
$username = \yii\helpers\ArrayHelper::getValue($_POST, 'username');
// working with object
$username = \yii\helpers\ArrayHelper::getValue($user, 'username');
// working with anonymous function
$fullName = \yii\helpers\ArrayHelper::getValue($user, function ($user, $defaultValue) {
return $user->firstName . ' ' . $user->lastName;
});
// using dot format to retrieve the property of embedded object
$street = \yii\helpers\ArrayHelper::getValue($users, 'address.street');
// using an array of keys to retrieve the value
$value = \yii\helpers\ArrayHelper::getValue($versions, ['1.0', 'date']);
| public static mixed getValue ( $array, $key, $default = null ) | ||
|---|---|---|
| $array | array|object |
Массив или объект для извлечения значения |
| $key | string|Closure|array |
Имя ключа элемента массива, массив ключей или имя свойства объекта, или анонимная функция, возвращающая значение. Подпись анонимной функции должна быть: |
| $default | mixed |
Значение по умолчанию, возвращаемое, если указанный ключ массива не существует. Не используется при получении значения из объекта. |
| return | mixed |
Значение элемента, если найдено, значение по умолчанию в противном случае |
htmlDecode() public static method
Декодирует HTML-сущности в соответствующие символы в массиве строк.
По умолчанию декодируются только значения массива. Если значение является массивом, этот метод также декодирует его рекурсивно. Декодируются только строковые значения.
См. также http://www.php.net/manual/en/function.htmlspecialchars-decode.php.
| public static array htmlDecode ( $data, $valuesOnly = true ) | ||
|---|---|---|
| $data | array |
Данные для декодирования |
| $valuesOnly | boolean |
Декодировать только значения массива. Если false, будут декодированы и ключи, и значения массива. |
| return | array |
Декодированные данные |
htmlEncode() public static method
Кодирует специальные символы в массиве строк в HTML-сущности.
По умолчанию кодируются только значения массива. Если значение является массивом, этот метод также закодирует его рекурсивно. Кодируются только строковые значения.
См. также http://www.php.net/manual/en/function.htmlspecialchars.php.
| public static array htmlEncode ( $data, $valuesOnly = true, $charset = null ) | ||
|---|---|---|
| $data | array |
Данные для кодирования |
| $valuesOnly | boolean |
Кодировать только значения массива. Если false, будут закодированы и ключи, и значения массива. |
| $charset | string |
Кодировка, используемая для данных. Если не задано, будет использоваться yii\base\Application::$charset. |
| return | array |
Закодированные данные |
index() public static method
Индексирует и/или группирует массив по заданному ключу.
Входные данные должны быть либо многомерным массивом, либо массивом объектов.
Ключ может быть либо именем ключа подмассива, либо именем свойства объекта, либо анонимной функцией, которая должна вернуть значение, используемое в качестве ключа.
$groups — массив ключей, используемых для группировки входного массива в один или несколько подмассивов на основе заданных ключей.
Если $key задан как null или значение элемента, соответствующего ключу, равно null в дополнение к $groups не указан, то элемент отбрасывается.
Например:
$array = [
['id' => '123', 'data' => 'abc', 'device' => 'laptop'],
['id' => '345', 'data' => 'def', 'device' => 'tablet'],
['id' => '345', 'data' => 'hgi', 'device' => 'smartphone'],
];
$result = ArrayHelper::index($array, 'id');
Результат будет ассоциативным массивом, где ключом является значение атрибута id
[
'123' => ['id' => '123', 'data' => 'abc', 'device' => 'laptop'],
'345' => ['id' => '345', 'data' => 'hgi', 'device' => 'smartphone']
// The second element of an original array is overwritten by the last element because of the same id
]
Анонимную функцию также можно использовать в массиве группировки.
$result = ArrayHelper::index($array, function ($element) {
return $element['id'];
});
Передача id в качестве третьего аргумента сгруппирует $array по id:
$result = ArrayHelper::index($array, null, 'id');
Результат будет многомерным массивом, сгруппированным по id на первом уровне, по device на втором уровне и индексированным по data на третьем уровне:
[
'123' => [
['id' => '123', 'data' => 'abc', 'device' => 'laptop']
],
'345' => [ // all elements with this index are present in the result array
['id' => '345', 'data' => 'def', 'device' => 'tablet'],
['id' => '345', 'data' => 'hgi', 'device' => 'smartphone'],
]
]
Анонимную функцию также можно использовать в массиве группировки:
$result = ArrayHelper::index($array, 'data', [function ($element) {
return $element['id'];
}, 'device']);
Результат будет многомерным массивом, сгруппированным по id на первом уровне, по device на втором и индексированным по data на третьем уровне:
[
'123' => [
'laptop' => [
'abc' => ['id' => '123', 'data' => 'abc', 'device' => 'laptop']
]
],
'345' => [
'tablet' => [
'def' => ['id' => '345', 'data' => 'def', 'device' => 'tablet']
],
'smartphone' => [
'hgi' => ['id' => '345', 'data' => 'hgi', 'device' => 'smartphone']
]
]
]
| public static array index ( $array, $key, $groups = [] ) | ||
|---|---|---|
| $array | array |
Массив, который нужно индексировать или сгруппировать |
| $key | string|Closure|null |
Имя столбца или анонимная функция, результат которой будет использоваться для индексации массива |
| $groups | string|string[]|Closure[]|null |
Массив ключей, который будет использоваться для группировки входного массива по одному или нескольким ключам. Если атрибут $key или его значение для конкретного элемента равно null и $groups не определён, элемент массива отбрасывается. В противном случае, если $groups указан, элемент массива будет добавлен в результирующий массив без ключа. Этот параметр доступен с версии 2.0.8. |
| return | array |
Индексированный и/или сгруппированный массив |
isAssociative() public static method
Возвращает значение, указывающее, является ли заданный массив ассоциативным.
Массив является ассоциативным, если все его ключи являются строками. Если $allStrings ложно, то массив будет считаться ассоциативным, если хотя бы один из его ключей является строкой.
Обратите внимание, что пустой массив НЕ будет считаться ассоциативным.
| public static boolean isAssociative ( $array, $allStrings = true ) | ||
|---|---|---|
| $array | array |
Проверяемый массив |
| $allStrings | boolean |
Требуется ли, чтобы все ключи массива были строками, для того, чтобы массив считался ассоциативным. |
| return | boolean |
Является ли массив ассоциативным |
isIn() public static method (доступно с версии 2.0.7)
Проверяет, содержит ли массив или объект Traversable элемент.
Этот метод делает то же самое, что и функция PHP in_array(), но дополнительно работает с объектами, реализующими интерфейс Traversable.
См. также http://php.net/manual/en/function.in-array.php.
| public static boolean isIn ( $needle, $haystack, $strict = false ) | ||
|---|---|---|
| $needle | mixed |
Значение для поиска. |
| $haystack | array|Traversable |
Множество значений для поиска. |
| $strict | boolean |
Включить строгое ( |
| return | boolean |
|
| throws | yii\base\InvalidParamException |
если |
isIndexed() public static method
Возвращает значение, указывающее, является ли данный массив индексированным.
Массив считается индексированным, если все его ключи являются целыми числами. Если $consecutive равно true, то ключи массива должны быть последовательной последовательностью, начиная с 0.
Обратите внимание, что пустой массив будет считаться индексированным.
| public static boolean isIndexed ( $array, $consecutive = false ) | ||
|---|---|---|
| $array | array |
Проверяемый массив |
| $consecutive | boolean |
Требуется ли, чтобы ключи массива были последовательной последовательностью, для того, чтобы массив считался индексированным. |
| return | boolean |
Является ли массив ассоциативным |
isSubset() public static method (доступно с версии 2.0.7)
Проверяет, является ли массив или Traversable подмножеством другого массива или Traversable.
Этот метод вернёт true, если все элементы $needles содержатся в $haystack. Если хотя бы один элемент отсутствует, будет возвращено false.
| public static boolean isSubset ( $needles, $haystack, $strict = false ) | ||
|---|---|---|
| $needles | array|Traversable |
Значения, которые все должны быть в |
| $haystack | array|Traversable |
Множество значений для поиска. |
| $strict | boolean |
Включить строгое ( |
| return | boolean |
|
| throws | yii\base\InvalidParamException |
если |
isTraversable() public static method (доступно с версии 2.0.8)
Проверяет, является ли переменная массивом или Traversable.
Этот метод делает то же самое, что и функция PHP is_array(), но дополнительно работает с объектами, реализующими интерфейс Traversable.
См. также http://php.net/manual/en/function.is-array.php.
| public static boolean isTraversable ( $var ) | ||
|---|---|---|
| $var | mixed |
Переменная, которая оценивается. |
| return | boolean |
Является ли $var похожим на массив |
keyExists() public static method
Проверяет, содержит ли данный массив указанный ключ.
Этот метод расширяет функцию array_key_exists(), поддерживая сравнение ключей без учёта регистра.
| public static boolean keyExists ( $key, $array, $caseSensitive = true ) | ||
|---|---|---|
| $key | string |
Ключ для проверки |
| $array | array |
Массив с ключами для проверки |
| $caseSensitive | boolean |
Требуется ли чувствительность к регистру при сравнении ключей |
| return | boolean |
Содержит ли массив указанный ключ |
map() public static method
Создаёт карту (пары ключ-значение) из многомерного массива или массива объектов.
Параметры $from и $to задают имена ключей или имена свойств для создания карты. Необязательно, можно дополнительно сгруппировать карту по полю группировки $group.
Например,
$array = [
['id' => '123', 'name' => 'aaa', 'class' => 'x'],
['id' => '124', 'name' => 'bbb', 'class' => 'x'],
['id' => '345', 'name' => 'ccc', 'class' => 'y'],
];
$result = ArrayHelper::map($array, 'id', 'name');
// the result is:
// [
// '123' => 'aaa',
// '124' => 'bbb',
// '345' => 'ccc',
// ]
$result = ArrayHelper::map($array, 'id', 'name', 'class');
// the result is:
// [
// 'x' => [
// '123' => 'aaa',
// '124' => 'bbb',
// ],
// 'y' => [
// '345' => 'ccc',
// ],
// ]
| public static array map ( $array, $from, $to, $group = null ) | ||
|---|---|---|
| $array | array | |
| $from | string|Closure | |
| $to | string|Closure | |
| $group | string|Closure | |
merge() public static method
Рекурсивно объединяет два или более массивов в один.
Если в каждом массиве есть элемент с одинаковым строковым значением ключа, то последний перепишет предыдущий (отличается от array_merge_recursive). Рекурсивное объединение будет проведено, если у обоих массивов есть элемент типа массив и у них одинаковый ключ. Для элементов с целочисленными ключами элементы из последнего массива будут добавлены в первый массив. Можно использовать объект yii\helpers\UnsetArrayValue для удаления значения из предыдущего массива или yii\helpers\ReplaceArrayValue для принудительной замены предыдущего значения вместо рекурсивного объединения.
| public static array merge ( $a, $b ) | ||
|---|---|---|
| $a | array |
Массив, в который будет осуществляться объединение. |
| $b | array |
Массив, из которого будет осуществляться объединение. Вы можете указать дополнительные массивы через третий, четвёртый и т.д. аргументы. |
| return | array |
Объединённый массив (исходные массивы не изменяются). |
multisort() public static method
Сортирует массив объектов или массивов (с одинаковой структурой) по одному или нескольким ключам.
| public static void multisort ( &$array, $key, $direction = SORT_ASC, $sortFlag = SORT_REGULAR ) | ||
|---|---|---|
| $array | массив |
Массив, который будет отсортирован. Массив будет изменён после вызова этого метода. |
| $key | строка|замыкание|массив |
Ключ(и), по которому(ым) будет производиться сортировка. Это относится к имени ключа элементов подмассива, имени свойства объектов или анонимной функции, возвращающей значения для сравнения. Подпись анонимной функции должна быть следующей: |
| $direction | целое число|массив |
Направление сортировки. Может быть либо |
| $sortFlag | целое число|массив |
Флаг сортировки PHP. Допустимые значения включают |
| throws | yii\base\InvalidParamException |
если параметр $direction или $sortFlag не имеет правильного количества элементов, соответствующего количеству элементов в $key. |
remove() public static method
Удаляет элемент из массива и возвращает его значение. Если ключ не существует в массиве, возвращается значение по умолчанию.
Примеры использования,
// $array = ['type' => 'A', 'options' => [1, 2]]; // working with array $type = \yii\helpers\ArrayHelper::remove($array, 'type'); // $array content // $array = ['options' => [1, 2]];
| public static mixed|null remove ( &$array, $key, $default = null ) | ||
|---|---|---|
| $array | массив |
Массив, из которого извлекается значение |
| $key | строка |
Имя ключа элемента массива |
| $default | смешанный тип |
Значение по умолчанию, которое будет возвращено, если указанный ключ не существует |
| return | смешанный тип|null |
Значение элемента, если он найден, значение по умолчанию в противном случае |
removeValue() public static method (доступен с версии 2.0.11)
Удаляет элементы с совпадающими значениями из массива и возвращает удаленные элементы.
Пример,
$array = ['Bob' => 'Dylan', 'Michael' => 'Jackson', 'Mick' => 'Jagger', 'Janet' => 'Jackson']; $removed = \yii\helpers\ArrayHelper::removeValue($array, 'Jackson'); // result: // $array = ['Bob' => 'Dylan', 'Mick' => 'Jagger']; // $removed = ['Michael' => 'Jackson', 'Janet' => 'Jackson'];
| public static массив removeValue ( &$array, $value ) | ||
|---|---|---|
| $array | массив |
Массив, где ищется значение |
| $value | строка |
Значение, которое нужно удалить из массива |
| return | массив |
Элементы, которые были удалены из массива |
toArray() public static method
Преобразует объект или массив объектов в массив.
| public static массив toArray ( $object, $properties = [], $recursive = true ) | ||
|---|---|---|
| $object | объект|массив|строка |
Объект, который нужно преобразовать в массив |
| $properties | массив |
Отображение имен классов объектов к свойствам, которые нужно поместить в результирующие массивы. Указанные для каждого класса свойства — это массив следующего формата: [
'app\models\Post' => [
'id',
'title',
// the key name in array result => property name
'createTime' => 'created_at',
// the key name in array result => anonymous function
'length' => function ($post) {
return strlen($post->content);
},
],
]
Результат [
'id' => 123,
'title' => 'test',
'createTime' => '2013-01-01 12:00AM',
'length' => 301,
]
|
| $recursive | булево значение |
Нужно ли рекурсивно преобразовывать свойства, которые являются объектами, в массивы. |
| return | массив |
Массивная форма представления объекта |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-helpers-basearrayhelper.html