Skip to content

📦 Класс Arr ​

Утилитный класс для работы с массивами. Поддерживает доступ по dot-ключам, проверку структуры, глубокую декодировку JSON, фильтрацию ключей и объединение массивов по ключу.

🔑 get(array $array, string $key, $default = null) ​

Получает значение из массива по ключу в dot-нотации.

📌 Пример:

php
$data = ['user' => ['name' => 'Alice']];
$name = Arr::get($data, 'user.name'); // 'Alice'

📝 set(array &$array, string $key, $value): void ​

Устанавливает значение в массив по ключу в dot-нотации.

📌 Пример:

php
$data = [];
Arr::set($data, 'user.email', 'test@example.com');
// $data = ['user' => ['email' => 'test@example.com']]

📋 isList(array $array): bool ​

Проверяет, является ли массив обычным списком (индексированным от 0).

📌 Пример:

php
Arr::isList(['a', 'b']); // true
Arr::isList(['a' => 1, 'b' => 2]); // false

📁 isAssoc(array $array): bool ​

Проверяет, является ли массив ассоциативным.

📌 Пример:

php
Arr::isAssoc(['a' => 1, 'b' => 2]); // true

🌲 depth(array $array): int ​

Возвращает максимальную глубину вложенности массива.

📌 Пример:

php
Arr::depth([1, [2, [3]]]); // 3

🧠 jsonDecode($data, $assoc = true, $depth = 512, $options = 0) ​

Глубоко декодирует JSON-строки, даже если они вложены в массивы.

📌 Пример:

php
$json = '{"user":"{\"name\":\"Alice\"}"}';
$result = Arr::jsonDecode($json);
// ['user' => ['name' => 'Alice']]

🚫 exceptKeys(array $array, array $keys): array ​

Удаляет из массива указанные ключи.

📌 Пример:

php
$data = ['name' => 'Alice', 'email' => 'a@example.com'];
$result = Arr::exceptKeys($data, ['email']);
// ['name' => 'Alice']

✅ onlyKeys(array $array, array $keys): array ​

Оставляет в массиве только указанные ключи.

📌 Пример:

php
$data = ['name' => 'Alice', 'email' => 'a@example.com'];
$result = Arr::onlyKeys($data, ['email']);
// ['email' => 'a@example.com']

🔍 contains(array $array, string $fragment): bool ​

Есть ли среди значений строка, в которой встречается фрагмент. Значения других типов пропускаются, вложенность не обходится.

📌 Пример:

php
Arr::contains(['one.css', 'two.js'], '.js'); // true

🧹 clean(array $array): array ​

Убирает элементы с пустым значением — '', null, 0, false, []. Список после этого переиндексируется, ассоциативный массив сохраняет ключи.

📌 Пример:

php
Arr::clean(['a' => 1, 'b' => '', 'c' => []]);  // ['a' => 1]
Arr::clean(['x', '', 'y']);                     // ['x', 'y']

0 и false считаются пустыми

Проверка — empty(), поэтому законный ноль исчезнет. Для фильтрации чисел не годится.

🥇 first(array $array, callable $callback = null, $default = null) ​

Первый элемент или первый, который принял колбэк. Если не подошло ничего, вернёт $default — в том числе на пустом массиве, где reset() отдал бы false.

📌 Пример:

php
Arr::first([3, 8, 2]);                             // 3
Arr::first([3, 8, 2], fn($v) => $v > 5);           // 8
Arr::first([], null, 'none');                      // 'none'

Колбэк получает значение и ключ, в этом порядке.

🔗 mergeByKeyMatch(array $base, array $extra, string $key): array ​

Объединяет два массива по совпадению значения указанного ключа.

📌 Пример:

php
$base = [['id' => 1, 'name' => 'Alice'], ['id' => 2, 'name' => 'Bob']];
$extra = [['id' => 2, 'email' => 'bob@example.com']];
$result = Arr::mergeByKeyMatch($base, $extra, 'id');

/*
[
  ['id' => 1, 'name' => 'Alice'],
  ['id' => 2, 'name' => 'Bob', 'email' => 'bob@example.com']
]
*/

© PageBlocks 2019-present