-
Notifications
You must be signed in to change notification settings - Fork 30
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()- перевернуть массив
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.
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.
arr::toArray(array|Iterator $collection, bool $withKeys = false): arrayМетод конвертирует итератор в массив, если передан массив вместо итератора, то возвратиться массив без ключей. По-умолчанию метод не сохраняет ключи итератора и массива $collection, но можно их сохранять, передав в параметр $withKeys значение true.
ℹ️ В классическом php есть похожая функция
iterator_to_array()илиarray_values(), если передать$withKeysкакfalse.
Метод псевдоним к методу toArray(), см. выше.
arr::toList($collection, ...$others): arrayФормирует список из массивов и обычных значений в единый одномерный массив. Чтобы понять, как работает функция, лучше взглянуть на пример:
$list = arr::toList(['x' => 10, 20], 30, ['x' => 50, 60]);
var_dump($list);
// выведет [10, 20, 30, 50, 60]arr::keys(array $array): arrayМетод возвращает ключи массива $array, похожая функция array_keys().
$array = ['x' => 20, 'y' => 30];
var_dump(arr::keys($array)); // выведет ['x', 'y']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]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]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 передается ключ перебираемого массива или итератора.
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().
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- если в конец.
arr::sortByKeys(array|Iterator $collection, callable $comparator = null, bool $saveKeys = false): arrayМетод сортирует коллекцию $collection по её ключам, применяя для этого функцию $comparator для сравнения элементов. Функция очень похожа на arr ::sort(), только сортирует по ключам, а не значениям. В функцию $comparator передаются ключи коллекции, а не значения как в sort().
arr::peak(array $array): mixedВозвращает последний элемент массива.
$nums = [1, 2, 3, 5];
var_dump(arr::peak($nums)); // выведет 5!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];arr::pop(array &$array): mixedВозвращает последний элемент массива и удаляет его.
$nums = [1, 2, 3, 4];
$lastNum = arr::pop($nums);
var_dump($lastNum); // выведет 4.
var_dump($nums); // выведет [1, 2, 3].arr::shift(array &$array): mixedВозвращает первый элемент массива и удаляет его.
$nums = [1, 2, 3, 4];
$firstNum = arr::shift($nums);
var_dump($firstNum); // выведет 1.
var_dump($nums); // выведет [2, 3, 4].arr::unshift(array &$array, ...$values)Добавляет в начало массива $array один или несколько элементов.
$nums = [4, 5];
arr::unshift($nums, 1, 2, 3);
var_dump($nums); // выведет [1, 2, 3, 4, 5];arr::first(array|Traversable $collection): mixedВозвращает первый элемент коллекции (массива или итератора).
arr::firstKey(array|Traversable $collection): string|int|nullВозвращает первый ключ коллекции (массива или итератора).
arr::last(array $collection): mixed
⚠️ Метод появился начиная с DevelNext 16.5.0
Возвращает последний элемент массива.
$arr = ['abc', 'xyz', 'foo', 'bar'];
$last = arr::last($arr);
alert($last); // покажет bararr::lastKey(array $collection): string|int|null
⚠️ Метод появился начиная с DevelNext 16.5.0
Возвращает последний ключ массива.
arr::reverse(array $array): arrayВозвращает перевернутый массив от $array.
$array = [1, 2, 3];
$newArray = arr::reverse($array);
var_dump($newArray); // выведет [3, 2, 1].