Класс arr
- class
arr
(php\lib\arr
). - package
std
.
use php\lib\arr;
// или
use std;
Класс для работы с массивами и итераторами в php, состоит только из статических методов, экземпляр класса создать невозможно.
Статичные методы
arr ::
count()
- количество элементовarr ::
has()
- содержит ли элементarr ::
toArray()
- итератор в массивarr ::
of()
- массив из итерируемого значенияarr ::
toList()
- превратить в списокarr ::
keys()
- ключи массиваarr ::
values()
- значения массиваarr ::
combine()
- массив из двух массивов ключей и значенийarr ::
map()
- map над массивомarr ::
flatten()
- сделать массив плоскимarr ::
sort()
- сортировка массиваarr ::
sortByKeys()
- сортировка массива по ключамarr ::
peak()
- последний элементarr ::
push()
- добавить в конецarr ::
pop()
- удалить последний элемент и возвратить егоarr ::
shift()
arr ::
unshift()
- вставить элементы в началоarr ::
first()
- первый элементarr ::
firstKey()
- первый ключ массиваarr ::
last()
- последний элементarr ::
lastKey()
- последний ключarr ::
reverse()
- перевернуть массив
count()
arr::count(array|Countable|Iterator $collection): int
Метод возвращает количество элементов в массиве или в объекте-итераторе или в объекте, который реализует интерфейс Countable с методом count()
.
⚠️ Внимание, для итераторов происходит полный перебор всех элементов для подсчета количества, поэтому, для больших списков операция может занять достаточно много времени!
$array = [1, 2, 3, 4, 5];
$count = arr::count($array);
class Cars imlements Countable {
function count() {
return 3;
}
}
$cars = new Cars();
$carCount = arr::count($cars); // carCount будет 3.
ℹ️ Метод работает таким же образом как функция
count()
иsizeof()
из классического php.
has()
arr::has(array|Traversable $collection, mixed $value, bool $strict = false): bool
Метод возвращает true
, если в массиве или коллекции $collection
есть значение $value
. Можно задать строгость проверки через параметр $strict
. Если проверка строгая, то кроме значений в массиве также будут сравниваться и типы как в операторе ===
.
$array = ['banana', 'apple', 'plum'];
if (arr::has($array, 'banana')) {
// в массиве есть banana.
}
Метод немного напоминает по своей работе функцию
in_array()
из классического php.
toArray()
arr::toArray(array|Iterator $collection, bool $withKeys = false): array
Метод конвертирует итератор в массив, если передан массив вместо итератора, то возвратиться массив без ключей. По-умолчанию метод не сохраняет ключи итератора и массива $collection
, но можно их сохранять, передав в параметр $withKeys
значение true
.
ℹ️ В классическом php есть похожая функция
iterator_to_array()
илиarray_values()
, если передать$withKeys
какfalse
.
of()
Метод псевдоним к методу toArray()
, см. выше.
toList()
arr::toList($collection, ...$others): array
Формирует список из массивов и обычных значений в единый одномерный массив. Чтобы понять, как работает функция, лучше взглянуть на пример:
$list = arr::toList(['x' => 10, 20], 30, ['x' => 50, 60]);
var_dump($list);
// выведет [10, 20, 30, 50, 60]
keys()
arr::keys(array $array): array
Метод возвращает ключи массива $array
, похожая функция array_keys()
.
$array = ['x' => 20, 'y' => 30];
var_dump(arr::keys($array)); // выведет ['x', 'y']
values()
arr::values(array|Iterator $array): array
⚠️ Метод появился начиная с DevelNext 16.5.0
Метод возвращает значения массива $array
, похожая функция array_values()
.
$array = ['x' => 20, 'y' => 30];
var_dump(arr::values($array)); // выведет [0 => 20, 1 => 30]
combine()
arr::combine(array|Iterator $keys, array|Iterator $values): array
Формирует один массив из ключей $keys
и значений $values
. Метод похож на функцию array_combine()
, однако умеет работать не только с массивами, но и с итераторами!
$array = arr::combine(['x', 'y'], [20, 30]);
var_dump($array); // [x => 20, y => 30]
map()
arr::map(array|Iterator $collection, callable $callback): array
Метод формирует из массива или итератора $collection
новый массив с помощью вызова коллбэка $callback
для каждого элемента.
$array = [1, 2, 3, 4, 5];
$newArray = arr::map($array, function ($value) { return $value + 1; });
// newArray --> [2, 3, 4, 5, 6];
Вторым параметром в callback передается ключ перебираемого массива или итератора.
flatten()
arr::flatten(array|Iterator $collection, int $maxLevel = -1): array
Метод формирует одномерный массив из многомерного массива или итератора. $maxLevel
- максимальный уровень вложенности, до которого пройдет метод, по-умолчанию -1
, что означает - отсутствие максимума.
// многомерный массив.
$array = [1, ['a', 'b'], [[333, 666], [77, 88]]];
$newArray = arr::flatten($array);
// newArray --> [1, 'a', 'b', 333, 666, 77, 88];
См. также метод
arr ::
toList()
.
sort()
arr::sort(array|Iterator $collection, callable $comparator = null, bool $saveKeys = false): array
Возвращает отсортированный массив, созданный на основе коллекции $collection
(массив или итератор) с применением функции сравнения $comparator
. По-умолчанию метод не сохраняет ключи, для этого есть параметр $saveKeys
.
$arr = [3, 9, 1, 4, 11];
$sortedArr = arr::sort($arr, function ($a, $b) {
if ($a == $b) return 0;
return $a < $b ? 1 : -1;
});
// sortedArr -> [1, 3, 4, 9, 11];
Функция
$comparator
должна возвращать0
если элементы равно,1
- если элемент нужно помещать в начало,-1
- если в конец.
sortByKeys()
arr::sortByKeys(array|Iterator $collection, callable $comparator = null, bool $saveKeys = false): array
Метод сортирует коллекцию $collection
по её ключам, применяя для этого функцию $comparator
для сравнения элементов. Функция очень похожа на arr ::
sort()
, только сортирует по ключам, а не значениям. В функцию $comparator
передаются ключи коллекции, а не значения как в sort()
.
peak()
arr::peak(array $array): mixed
Возвращает последний элемент массива.
$nums = [1, 2, 3, 5];
var_dump(arr::peak($nums)); // выведет 5!
push()
arr::push(array|ArrayAccess &$array, ...$values)
Добавляет элемент или несколько элементов в конец массива $array
или объекта с реализацией ArrayAccess
.
$nums = [1, 2];
arr::push($nums, 3, 4, 5);
var_dump($nums); // выведет [1, 2, 3, 4, 5];
pop()
arr::pop(array &$array): mixed
Возвращает последний элемент массива и удаляет его.
$nums = [1, 2, 3, 4];
$lastNum = arr::pop($nums);
var_dump($lastNum); // выведет 4.
var_dump($nums); // выведет [1, 2, 3].
shift()
arr::shift(array &$array): mixed
Возвращает первый элемент массива и удаляет его.
$nums = [1, 2, 3, 4];
$firstNum = arr::shift($nums);
var_dump($firstNum); // выведет 1.
var_dump($nums); // выведет [2, 3, 4].
unshift()
arr::unshift(array &$array, ...$values)
Добавляет в начало массива $array
один или несколько элементов.
$nums = [4, 5];
arr::unshift($nums, 1, 2, 3);
var_dump($nums); // выведет [1, 2, 3, 4, 5];
first()
arr::first(array|Traversable $collection): mixed
Возвращает первый элемент коллекции (массива или итератора).
firstKey()
arr::firstKey(array|Traversable $collection): string|int|null
Возвращает первый ключ коллекции (массива или итератора).
last()
arr::last(array $collection): mixed
⚠️ Метод появился начиная с DevelNext 16.5.0
Возвращает последний элемент массива.
$arr = ['abc', 'xyz', 'foo', 'bar'];
$last = arr::last($arr);
alert($last); // покажет bar
lastKey()
arr::lastKey(array $collection): string|int|null
⚠️ Метод появился начиная с DevelNext 16.5.0
Возвращает последний ключ массива.
reverse()
arr::reverse(array $array): array
Возвращает перевернутый массив от $array
.
$array = [1, 2, 3];
$newArray = arr::reverse($array);
var_dump($newArray); // выведет [3, 2, 1].