Arr
in package
Статические утилиты для работы с массивами.
Суперсет массивных помощников illuminate/support и nette/utils: доступ по
«точечной» нотации (get/set/has/add/forget/pull), выборки и срезы
(only/except/pluck/take/random), проверки (hasAny/exists/isList/
isAssoc), преобразования (flatten/dot/undot/collapse/map/mapWithKeys/
keyBy/prependKeysWith/divide/crossJoin), упорядочивание (sort/sortDesc/
sortRecursive/shuffle), а также first/last/where/whereNotNull/join
с предикатами. Ключи «точечной» нотации адресуют вложенные элементы через ..
Table of Contents
Methods
- add() : array<string|int, mixed>
- Установить значение по «точечному» ключу, только если его ещё нет.
- collapse() : array<int, mixed>
- Схлопнуть массив массивов в один уровень.
- crossJoin() : array<int, array<string|int, mixed>>
- Декартово произведение переданных массивов.
-
divide()
: array{0: list
, 1: list} - Разделить массив на список ключей и список значений.
- dot() : array<string, mixed>
- Свести многомерный массив к «точечным» ключам.
- except() : array<string|int, mixed>
- Исключить указанные ключи.
- exists() : bool
- Есть ли ключ на верхнем уровне (без «точечной» нотации).
- first() : mixed
- Первый элемент, удовлетворяющий предикату (или просто первый).
- flatten() : array<int, mixed>
- Развернуть многомерный массив в плоский список.
- forget() : array<string|int, mixed>
- Удалить элемент по «точечному» ключу.
- get() : mixed
- Значение из массива по «точечному» ключу.
- has() : bool
- Есть ли элемент по «точечному» ключу.
- hasAny() : bool
- Есть ли хотя бы один из «точечных» ключей.
- isAssoc() : bool
- Является ли массив ассоциативным (не списком).
- isList() : bool
- Является ли массив списком (последовательные int-ключи с нуля).
- join() : string
- Склеить значения массива с особым разделителем перед последним элементом.
- keyBy() : array<string|int, mixed>
- Переиндексировать массив по вычисленному ключу.
- last() : mixed
- Последний элемент, удовлетворяющий предикату (или просто последний).
- map() : array<string|int, mixed>
- Преобразовать значения с доступом к ключу (ключи сохраняются).
- mapWithKeys() : array<string|int, mixed>
- Преобразовать элементы в пары «ключ => значение» и объединить их.
- only() : array<string|int, mixed>
- Оставить только указанные ключи.
- pluck() : array<string|int, mixed>
- Извлечь столбец значений (опционально с ключами).
- prepend() : array<string|int, mixed>
- Добавить элемент в начало массива.
- prependKeysWith() : array<string|int, mixed>
- Добавить префикс ко всем ключам верхнего уровня.
- pull() : mixed
- Вернуть значение по «точечному» ключу и удалить его из массива.
- random() : mixed
- Случайный элемент массива (или список случайных элементов).
- set() : array<string|int, mixed>
- Установить значение по «точечному» ключу, создавая вложенные массивы.
- shuffle() : array<int, mixed>
- Перемешать значения массива (Fisher–Yates на криптостойком {@see random_int()}).
- sort() : array<int, mixed>
- Отсортировать значения по возрастанию (ключи сбрасываются).
- sortDesc() : array<int, mixed>
- Отсортировать значения по убыванию (ключи сбрасываются).
- sortRecursive() : array<string|int, mixed>
- Рекурсивно отсортировать массив и все вложенные массивы.
- take() : array<string|int, mixed>
- Взять первые (или последние при отрицательном `$limit`) элементы.
- undot() : array<string|int, mixed>
- Восстановить многомерный массив из «точечных» ключей.
- where() : array<string|int, mixed>
- Отфильтровать массив предикатом (сохраняя ключи).
- whereNotNull() : array<string|int, mixed>
- Оставить только элементы со значением, отличным от `null` (ключи сохраняются).
- wrap() : array<string|int, mixed>
- Обернуть значение в массив (если ещё не массив).
Methods
add()
Установить значение по «точечному» ключу, только если его ещё нет.
public
static add(array<string|int, mixed> $array, int|string $key, mixed $value) : array<string|int, mixed>
Существующий ключ (даже со значением null) не перезаписывается.
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $key : int|string
-
ключ (поддерживает «точечную» нотацию)
- $value : mixed
-
записываемое значение
Return values
array<string|int, mixed> —массив с добавленным (или неизменным) элементом
collapse()
Схлопнуть массив массивов в один уровень.
public
static collapse(array<string|int, mixed> $array) : array<int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
Return values
array<int, mixed> —объединённые значения вложенных массивов
crossJoin()
Декартово произведение переданных массивов.
public
static crossJoin(array<string|int, mixed> ...$arrays) : array<int, array<string|int, mixed>>
Parameters
- $arrays : array<string|int, mixed>
-
массивы-сомножители
Return values
array<int, array<string|int, mixed>> —все сочетания по одному элементу из каждого массива
divide()
Разделить массив на список ключей и список значений.
public
static divide(array<string|int, mixed> $array) : array{0: list, 1: list}
Parameters
- $array : array<string|int, mixed>
-
исходный массив
Return values
array{0: listпара «ключи, значения»
dot()
Свести многомерный массив к «точечным» ключам.
public
static dot(array<string|int, mixed> $array[, string $prepend = '' ]) : array<string, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $prepend : string = ''
-
префикс ключей
Return values
array<string, mixed> —карта «точечный ключ» → значение
except()
Исключить указанные ключи.
public
static except(array<string|int, mixed> $array, array<int, int|string> $keys) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $keys : array<int, int|string>
-
исключаемые ключи
Return values
array<string|int, mixed> —массив без указанных ключей
exists()
Есть ли ключ на верхнем уровне (без «точечной» нотации).
public
static exists(array<string|int, mixed> $array, int|string $key) : bool
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $key : int|string
-
проверяемый ключ верхнего уровня
Return values
bool —true, если ключ существует (в том числе со значением null)
first()
Первый элемент, удовлетворяющий предикату (или просто первый).
public
static first(array<string|int, mixed> $array[, callable(mixed, Array): bool|null $callback = null ][, mixed $default = null ]) : mixed
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $callback : callable(mixed, Array): bool|null = null
-
предикат или null
- $default : mixed = null
-
значение по умолчанию
Return values
mixed —найденный элемент либо $default
flatten()
Развернуть многомерный массив в плоский список.
public
static flatten(array<string|int, mixed> $array[, int $depth = PHP_INT_MAX ]) : array<int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $depth : int = PHP_INT_MAX
-
максимальная глубина разворота
Return values
array<int, mixed> —плоский список значений
forget()
Удалить элемент по «точечному» ключу.
public
static forget(array<string|int, mixed> &$array, int|string $key) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив (изменяется по ссылке)
- $key : int|string
-
ключ (поддерживает «точечную» нотацию)
Return values
array<string|int, mixed> —изменённый массив
get()
Значение из массива по «точечному» ключу.
public
static get(array<string|int, mixed> $array[, int|string|null $key = null ][, mixed $default = null ]) : mixed
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $key : int|string|null = null
-
ключ (поддерживает «точечную» нотацию); null — весь массив
- $default : mixed = null
-
значение по умолчанию, если ключ не найден
Return values
mixed —найденное значение либо $default
has()
Есть ли элемент по «точечному» ключу.
public
static has(array<string|int, mixed> $array, int|string $key) : bool
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $key : int|string
-
ключ (поддерживает «точечную» нотацию)
Return values
bool —true, если элемент существует
hasAny()
Есть ли хотя бы один из «точечных» ключей.
public
static hasAny(array<string|int, mixed> $array, array<int, int|string> $keys) : bool
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $keys : array<int, int|string>
-
проверяемые ключи (поддерживают «точечную» нотацию)
Return values
bool —true, если найден хотя бы один ключ
isAssoc()
Является ли массив ассоциативным (не списком).
public
static isAssoc(array<string|int, mixed> $array) : bool
Parameters
- $array : array<string|int, mixed>
-
исходный массив
Return values
bool —true, если массив не является списком (пустой массив — false)
isList()
Является ли массив списком (последовательные int-ключи с нуля).
public
static isList(array<string|int, mixed> $array) : bool
Parameters
- $array : array<string|int, mixed>
-
исходный массив
Return values
bool —true, если массив — список
join()
Склеить значения массива с особым разделителем перед последним элементом.
public
static join(array<string|int, string> $array, string $glue[, string $finalGlue = '' ]) : string
Parameters
- $array : array<string|int, string>
-
список строк для склейки
- $glue : string
-
разделитель между элементами
- $finalGlue : string = ''
-
разделитель перед последним элементом (пустой — как
$glue)
Return values
string —склеенная строка
keyBy()
Переиндексировать массив по вычисленному ключу.
public
static keyBy(array<string|int, mixed> $array, callable(mixed): Array|string $keyBy) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $keyBy : callable(mixed): Array|string
-
«точечный» путь в элементе-массиве либо колбэк
Return values
array<string|int, mixed> —массив, переиндексированный по вычисленному ключу
last()
Последний элемент, удовлетворяющий предикату (или просто последний).
public
static last(array<string|int, mixed> $array[, callable(mixed, Array): bool|null $callback = null ][, mixed $default = null ]) : mixed
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $callback : callable(mixed, Array): bool|null = null
-
предикат или null
- $default : mixed = null
-
значение по умолчанию
Return values
mixed —найденный элемент либо $default
map()
Преобразовать значения с доступом к ключу (ключи сохраняются).
public
static map(array<string|int, mixed> $array, callable(mixed, Array): mixed $callback) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $callback : callable(mixed, Array): mixed
-
преобразование
($value, $key)
Return values
array<string|int, mixed> —массив с теми же ключами и преобразованными значениями
mapWithKeys()
Преобразовать элементы в пары «ключ => значение» и объединить их.
public
static mapWithKeys(array<string|int, mixed> $array, callable(mixed, Array): array<string|int, mixed> $callback) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $callback : callable(mixed, Array): array<string|int, mixed>
-
возвращает пару «ключ => значение»
Return values
array<string|int, mixed> —объединённые пары из результатов колбэка
only()
Оставить только указанные ключи.
public
static only(array<string|int, mixed> $array, array<int, int|string> $keys) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $keys : array<int, int|string>
-
сохраняемые ключи
Return values
array<string|int, mixed> —массив только с указанными ключами
pluck()
Извлечь столбец значений (опционально с ключами).
public
static pluck(array<string|int, mixed> $array, int|string|null $value[, int|string|null $key = null ]) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив массивов/объектов
- $value : int|string|null
-
ключ значения
- $key : int|string|null = null
-
ключ для ключей результата
Return values
array<string|int, mixed> —список значений либо карта ключ→значение
prepend()
Добавить элемент в начало массива.
public
static prepend(array<string|int, mixed> $array, mixed $value[, int|string|null $key = null ]) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $value : mixed
-
добавляемое значение
- $key : int|string|null = null
-
ключ (null — числовой в начало)
Return values
array<string|int, mixed> —массив с добавленным элементом
prependKeysWith()
Добавить префикс ко всем ключам верхнего уровня.
public
static prependKeysWith(array<string|int, mixed> $array, string $prefix) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $prefix : string
-
добавляемый префикс
Return values
array<string|int, mixed> —массив с префиксом у ключей
pull()
Вернуть значение по «точечному» ключу и удалить его из массива.
public
static pull(array<string|int, mixed> &$array, int|string $key[, mixed $default = null ]) : mixed
Parameters
- $array : array<string|int, mixed>
-
исходный массив (изменяется по ссылке)
- $key : int|string
-
ключ (поддерживает «точечную» нотацию)
- $default : mixed = null
-
значение по умолчанию, если ключ не найден
Return values
mixed —извлечённое значение либо $default
random()
Случайный элемент массива (или список случайных элементов).
public
static random(array<string|int, mixed> $array[, int|null $number = null ]) : mixed
Использует криптостойкий random_int() без смещения по модулю.
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $number : int|null = null
-
сколько элементов вернуть;
null— один случайный элемент
Tags
Return values
mixed —один элемент (при null) либо список из $number элементов
set()
Установить значение по «точечному» ключу, создавая вложенные массивы.
public
static set(array<string|int, mixed> &$array, int|string $key, mixed $value) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив (изменяется по ссылке)
- $key : int|string
-
ключ (поддерживает «точечную» нотацию)
- $value : mixed
-
записываемое значение
Return values
array<string|int, mixed> —изменённый массив
shuffle()
Перемешать значения массива (Fisher–Yates на криптостойком {@see random_int()}).
public
static shuffle(array<string|int, mixed> $array) : array<int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
Return values
array<int, mixed> —список перемешанных значений (ключи сбрасываются)
sort()
Отсортировать значения по возрастанию (ключи сбрасываются).
public
static sort(array<string|int, mixed> $array[, callable(mixed): mixed|null $callback = null ]) : array<int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $callback : callable(mixed): mixed|null = null
-
извлечение значения для сравнения;
null— сами значения
Return values
array<int, mixed> —отсортированный список значений
sortDesc()
Отсортировать значения по убыванию (ключи сбрасываются).
public
static sortDesc(array<string|int, mixed> $array) : array<int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
Return values
array<int, mixed> —отсортированный по убыванию список значений
sortRecursive()
Рекурсивно отсортировать массив и все вложенные массивы.
public
static sortRecursive(array<string|int, mixed> $array[, int $options = SORT_REGULAR ][, bool $descending = false ]) : array<string|int, mixed>
Списки сортируются по значениям (естественное сравнение), ассоциативные
массивы — по ключам с учётом $options.
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $options : int = SORT_REGULAR
-
флаги сортировки ключей ассоциативных массивов (
SORT_REGULAR,SORT_STRING, …) - $descending : bool = false
-
сортировать по убыванию
Return values
array<string|int, mixed> —рекурсивно отсортированный массив
take()
Взять первые (или последние при отрицательном `$limit`) элементы.
public
static take(array<string|int, mixed> $array, int $limit) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $limit : int
-
число элементов; отрицательное — столько последних
Return values
array<string|int, mixed> —срез массива
undot()
Восстановить многомерный массив из «точечных» ключей.
public
static undot(array<string, mixed> $array) : array<string|int, mixed>
Parameters
- $array : array<string, mixed>
-
карта «точечный ключ» → значение
Return values
array<string|int, mixed> —восстановленный многомерный массив
where()
Отфильтровать массив предикатом (сохраняя ключи).
public
static where(array<string|int, mixed> $array, callable(mixed, Array): bool $callback) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
- $callback : callable(mixed, Array): bool
-
предикат
Return values
array<string|int, mixed> —отфильтрованный массив
whereNotNull()
Оставить только элементы со значением, отличным от `null` (ключи сохраняются).
public
static whereNotNull(array<string|int, mixed> $array) : array<string|int, mixed>
Parameters
- $array : array<string|int, mixed>
-
исходный массив
Return values
array<string|int, mixed> —массив без null-значений
wrap()
Обернуть значение в массив (если ещё не массив).
public
static wrap(mixed $value) : array<string|int, mixed>
Parameters
- $value : mixed
-
значение любого типа
Return values
array<string|int, mixed> —сам массив, [] для null, либо [$value]