Spec-Zone.ru › Yii 2.0

Класс 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

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

  • var - $array['var'] останется в результате.
  • var.key = только `$array['var']['key'] останется в результате.
  • !var.key = `$array['var']['key'] будет удалено из результата.
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

Имя ключа элемента массива, массив ключей или имя свойства объекта, или анонимная функция, возвращающая значение. Подпись анонимной функции должна быть: function($array, $defaultValue). Возможность передать массив ключей доступна начиная с версии 2.0.4.

$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

true если $needle было найдено в $haystack, false в противном случае.

throws yii\base\InvalidParamException

если $haystack не является ни Traversable, ни массивом.

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.

$haystack array|Traversable

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

$strict boolean

Включить строгое (===) сравнение.

return boolean

true если $needles является подмножеством $haystack, false в противном случае.

throws yii\base\InvalidParamException

если $haystack или $needles не является ни Traversable, ни массивом.

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 строка|замыкание|массив

Ключ(и), по которому(ым) будет производиться сортировка. Это относится к имени ключа элементов подмассива, имени свойства объектов или анонимной функции, возвращающей значения для сравнения. Подпись анонимной функции должна быть следующей: function($item). Для сортировки по нескольким ключам, передайте здесь массив ключей.

$direction целое число|массив

Направление сортировки. Может быть либо SORT_ASC или SORT_DESC. При сортировке по нескольким ключам с разными направлениями сортировки, используйте массив направлений сортировки.

$sortFlag целое число|массив

Флаг сортировки PHP. Допустимые значения включают SORT_REGULAR, SORT_NUMERIC, SORT_STRING, SORT_LOCALE_STRING, SORT_NATURAL и SORT_FLAG_CASE. Для получения более подробной информации обратитесь к документации 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);
        },
    ],
]

Результат ArrayHelper::toArray($post, $properties) может выглядеть следующим образом:

[
    '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

Spec-Zone.ru

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