РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
959 of 1392 menu

Функция 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,
    который предоставляет методы для работы с массивами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить