Класс Arr
Класс Arr предназначен для работы с массивами и предоставляет множество полезных статических методов. Он используется для получения значений по "точечному" синтаксису, проверки существования ключей, извлечения подмножеств, работы с вложенными структурами и многого другого. Все методы класса являются статическими и вызываются через Arr::method.
Синтаксис
<?php
use Illuminate\Support\Arr;
Arr::methodName($array, ...$arguments);
?>
Метод get - получение значения по ключу
Метод get извлекает значение из массива по указанному ключу, используя "точечный" синтаксис для доступа к вложенным элементам. Если ключ отсутствует, возвращается значение по умолчанию.
<?php
use Illuminate\Support\Arr;
$arr = ['a' => 'b', 'c' => ['d' => 'e', 'f' => 'g']];
$res = Arr::get($arr, 'c.d');
echo $res;
?>
Результат выполнения кода:
"e"
Метод get также позволяет указать значение по умолчанию, которое будет возвращено, если ключ не найден.
<?php
use Illuminate\Support\Arr;
$arr = ['a' => 'b'];
$res = Arr::get($arr, 'c', 'default');
echo $res;
?>
Результат выполнения кода:
"default"
Метод has - проверка существования ключа
Метод has проверяет, существует ли заданный ключ (или ключи) в массиве. Для проверки вложенных ключей используется "точечный" синтаксис.
<?php
use Illuminate\Support\Arr;
$arr = ['a' => 'b', 'c' => ['d' => 'e']];
$res = Arr::has($arr, 'c.d');
var_dump($res);
?>
Результат выполнения кода:
"bool(true)"
Метод может принимать массив ключей и возвращает true, только если все они существуют.
<?php
use Illuminate\Support\Arr;
$arr = ['a' => 'b', 'c' => ['d' => 'e']];
$res = Arr::has($arr, ['a', 'c.d']);
var_dump($res);
?>
Результат выполнения кода:
"bool(true)"
Метод only - извлечение подмножества массива
Метод only возвращает новый массив, содержащий только те элементы исходного массива, ключи которых указаны в переданном списке. Для вложенных ключей используется "точечный" синтаксис.
<?php
use Illuminate\Support\Arr;
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
$res = Arr::only($arr, ['a', 'c']);
print_r($res);
?>
Результат выполнения кода:
"Array
(
[a] => 1
[c] => 3
)"
Метод except - исключение элементов из массива
Метод except возвращает новый массив, из которого удалены элементы с указанными ключами.
<?php
use Illuminate\Support\Arr;
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
$res = Arr::except($arr, ['b', 'd']);
print_r($res);
?>
Результат выполнения кода:
"Array
(
[a] => 1
[c] => 3
)"
Метод first - получение первого элемента
Метод first возвращает первый элемент массива, для которого переданное замыкание возвращает true. Если замыкание не указано, возвращается просто первый элемент массива. Если подходящий элемент не найден, возвращается значение по умолчанию.
<?php
use Illuminate\Support\Arr;
$arr = [1, 2, 3, 4, 5];
$res = Arr::first($arr, function ($value) {
return $value > 3;
});
echo $res;
?>
Результат выполнения кода:
"4"
Метод last - получение последнего элемента
Метод last возвращает последний элемент массива, для которого переданное замыкание возвращает true. Если замыкание не указано, возвращается просто последний элемент массива.
<?php
use Illuminate\Support\Arr;
$arr = [1, 2, 3, 4, 5];
$res = Arr::last($arr, function ($value) {
return $value < 5;
});
echo $res;
?>
Результат выполнения кода:
"4"
Метод pluck - извлечение значений по ключу
Метод pluck извлекает все значения для заданного ключа из массива. Если передан второй аргумент, он используется в качестве ключа для результирующего массива.
<?php
use Illuminate\Support\Arr;
$arr = [
['id' => 1, 'name' => 'a'],
['id' => 2, 'name' => 'b'],
['id' => 3, 'name' => 'c']
];
$res = Arr::pluck($arr, 'name');
print_r($res);
?>
Результат выполнения кода:
"Array
(
[0] => a
[1] => b
[2] => c
)"
Пример с использованием второго аргумента для задания ключей:
<?php
use Illuminate\Support\Arr;
$arr = [
['id' => 1, 'name' => 'a'],
['id' => 2, 'name' => 'b'],
['id' => 3, 'name' => 'c']
];
$res = Arr::pluck($arr, 'name', 'id');
print_r($res);
?>
Результат выполнения кода:
"Array
(
[1] => a
[2] => b
[3] => c
)"
Метод flatten - преобразование многомерного массива в плоский
Метод flatten преобразует многомерный массив в одномерный. По умолчанию flatten работает рекурсивно, извлекая все вложенные элементы.
<?php
use Illuminate\Support\Arr;
$arr = [1, 2, [3, 4, [5, 6]]];
$res = Arr::flatten($arr);
print_r($res);
?>
Результат выполнения кода:
"Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)"
Метод dot - преобразование в массив с "точечной" нотацией
Метод dot преобразует многомерный массив в одномерный, где ключи используют "точечный" синтаксис для обозначения вложенности.
<?php
use Illuminate\Support\Arr;
$arr = ['a' => ['b' => ['c' => 1, 'd' => 2]]];
$res = Arr::dot($arr);
print_r($res);
?>
Результат выполнения кода:
"Array
(
[a.b.c] => 1
[a.b.d] => 2
)"