Метод forget
Метод forget класса Arr предназначен для удаления элементов из массива по указанным ключам. Он принимает два параметра: первый - массив, из которого нужно удалить элементы, второй - ключ или массив ключей, которые следует удалить. Метод не изменяет исходный массив, а возвращает новый массив без указанных элементов. Если переданного ключа в массиве не существует, метод просто игнорирует его.
Синтаксис
<?php
Arr::forget($array, $keys);
?>
Пример
Давайте удалим из массива элемент с ключом 'status':
<?php
use Illuminate\Support\Arr;
$array = ['name' => 'John', 'status' => 'active', 'age' => 30];
$res = Arr::forget($array, 'status');
print_r($res);
?>
Результат выполнения кода:
Array
(
[name] => John
[age] => 30
)
Пример
Удалим сразу несколько элементов, передав массив ключей:
<?php
use Illuminate\Support\Arr;
$array = ['id' => 1, 'name' => 'John', 'status' => 'active', 'age' => 30];
$res = Arr::forget($array, ['status', 'age']);
print_r($res);
?>
Результат выполнения кода:
Array
(
[id] => 1
[name] => John
)
Пример
Метод также поддерживает точечную нотацию для работы с вложенными массивами. Удалим вложенный элемент:
<?php
use Illuminate\Support\Arr;
$array = [
'user' => [
'name' => 'John',
'email' => 'john@example.com',
'settings' => [
'theme' => 'dark',
'language' => 'en'
]
],
'status' => 'active'
];
$res = Arr::forget($array, 'user.settings.language');
print_r($res);
?>
Результат выполнения кода:
Array
(
[user] => Array
(
[name] => John
[email] => john@example.com
[settings] => Array
(
[theme] => dark
)
)
[status] => active
)
Пример
Можно удалить целую группу вложенных элементов, используя точечную нотацию с массивом ключей:
<?php
use Illuminate\Support\Arr;
$array = [
'user' => [
'name' => 'John',
'email' => 'john@example.com',
'profile' => [
'bio' => 'Developer',
'location' => 'NYC'
]
],
'status' => 'active'
];
$res = Arr::forget($array, ['user.email', 'user.profile.location']);
print_r($res);
?>
Результат выполнения кода:
Array
(
[user] => Array
(
[name] => John
[profile] => Array
(
[bio] => Developer
)
)
[status] => active
)
Пример
Если удаляемый ключ отсутствует, метод не выбрасывает исключение, а просто возвращает исходный массив:
<?php
use Illuminate\Support\Arr;
$array = ['name' => 'John', 'age' => 30];
$res = Arr::forget($array, 'status');
print_r($res);
?>
Результат выполнения кода:
Array
(
[name] => John
[age] => 30
)