-
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 ::combine() -
arr ::map() -
arr ::flatten() -
arr ::sort() -
arr ::sortByKeys() -
arr ::peak() -
arr ::push() -
arr ::pop() -
arr ::shift() -
arr ::unshift() -
arr ::first() -
arr ::firstKey() -
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::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- если в конец.