Метод set
Метод set класса Arr позволяет установить значение в массиве по указанному ключу. Он поддерживает "точечную" нотацию для работы с вложенными структурами данных. Первым параметром передаётся массив, вторым - ключ или путь к элементу, третьим - устанавливаемое значение. Если ключ не существует в массиве, он будет создан автоматически.
Синтаксис
<?php
use Illuminate\Support\Arr;
$arr = Arr::set($array, $key, $value);
?>
Пример
Давайте установим значение элемента с ключом 'name':
<?php
use Illuminate\Support\Arr;
$arr = ['name' => 'John', 'age' => 30];
$res = Arr::set($arr, 'name', 'Jane');
print_r($res);
?>
Результат выполнения кода:
Array
(
[name] => Jane
[age] => 30
)
Пример
Установим значение по "точечному" пути во вложенном массиве:
<?php
use Illuminate\Support\Arr;
$arr = [
'user' => [
'profile' => [
'name' => 'John'
]
]
];
$res = Arr::set($arr, 'user.profile.name', 'Jane');
print_r($res);
?>
Результат выполнения кода:
Array
(
[user] => Array
(
[profile] => Array
(
[name] => Jane
)
)
)
Пример
Если ключ не существует, метод создаст его автоматически:
<?php
use Illuminate\Support\Arr;
$arr = ['id' => 1];
$res = Arr::set($arr, 'user.email', 'test@example.com');
print_r($res);
?>
Результат выполнения кода:
Array
(
[id] => 1
[user] => Array
(
[email] => test@example.com
)
)
Пример
Метод также позволяет устанавливать значения с использованием символа '*' для массового обновления:
<?php
use Illuminate\Support\Arr;
$arr = [
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'Bob', 'age' => 35]
];
$res = Arr::set($arr, '*.age', 40);
print_r($res);
?>
Результат выполнения кода:
Array
(
[0] => Array
(
[name] => John
[age] => 40
)
[1] => Array
(
[name] => Jane
[age] => 40
)
[2] => Array
(
[name] => Bob
[age] => 40
)
)