Функция data_set
Функция data_set устанавливает значение в массиве или объекте по указанному "точечному" пути. Первым параметром передаётся массив или объект, вторым - путь в виде строки с точками, третьим - значение для установки. Четвёртым параметром можно передать флаг true для принудительного создания отсутствующих ключей.
Синтаксис
<?php
data_set($target, $path, $value, $force = false);
?>
Пример
Установим значение по простому пути:
<?php
$data = ['name' => 'John', 'age' => 30];
data_set($data, 'name', 'Jane');
$res = $data;
echo $res['name'];
?>
Результат выполнения кода:
"Jane"
Пример
Установим значение по вложенному пути с созданием недостающих ключей:
<?php
$data = [];
data_set($data, 'user.profile.name', 'John Doe');
$res = $data;
echo $res['user']['profile']['name'];
?>
Результат выполнения кода:
"John Doe"
Пример
Используем флаг force для принудительной установки значения:
<?php
$data = ['user' => ['profile' => []]];
data_set($data, 'user.profile.name', 'Jane Doe', true);
$res = $data;
echo $res['user']['profile']['name'];
?>
Результат выполнения кода:
"Jane Doe"
Пример
Установим значение в объекте:
<?php
class User {
public $profile;
}
$user = new User();
$user->profile = new stdClass();
data_set($user, 'profile.name', 'John Doe');
$res = $user;
echo $res->profile->name;
?>
Результат выполнения кода:
"John Doe"
Пример
Установим значение с использованием звёздочки для работы с массивами:
<?php
$data = [
'users' => [
['name' => 'John', 'age' => 30],
['name' => 'Jane', 'age' => 25],
]
];
data_set($data, 'users.*.status', 'active');
$res = $data;
echo $res['users'][0]['status'] . ', ' . $res['users'][1]['status'];
?>
Результат выполнения кода:
"active, active"
Пример
Попробуем установить значение без флага force:
<?php
$data = ['user' => []];
data_set($data, 'user.profile.name', 'John Doe');
$res = $data;
echo isset($res['user']['profile']['name']) ? $res['user']['profile']['name'] : 'not set';
?>
Результат выполнения кода:
"not set"
Смотрите также
-
функция
data_get,
которая получает значение по "точечному" пути -
функция
data_fill,
которая заполняет данные по "точечному" пути -
функция
data_forget,
которая удаляет данные по "точечному" пути -
класс
Arr,
который предоставляет методы для работы с массивами