[редактировать]

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