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

Функция data_fill

Функция data_fill применяется для работы с массивами и объектами. Она принимает три параметра: целевую переменную (массив или объект), строку с "точечным" путём к элементу и значение, которое нужно установить. Особенность функции заключается в том, что она устанавливает значение только тогда, когда указанный путь отсутствует или его значение равно null.

Синтаксис

<?php data_fill($target, $path, $value); ?>

Параметр $target может быть массивом или объектом. Параметр $path задаёт путь к элементу с использованием точек для разделения уровней вложенности. Параметр $value задаёт значение, которое будет установлено.

Пример

Давайте заполним вложенный массив, указав путь к несуществующему элементу:

<?php $data = [ 'user' => [ 'name' => 'John', ], ]; data_fill($data, 'user.email', 'john@example.com'); print_r($data); ?>

Результат выполнения кода:

[ 'user' => [ 'name' => 'John', 'email' => 'john@example.com', ], ]

Как видите, функция добавила новый элемент по указанному пути.

Пример

Если путь уже существует, функция не будет перезаписывать значение:

<?php $data = [ 'user' => [ 'name' => 'John', 'email' => 'old@example.com', ], ]; data_fill($data, 'user.email', 'new@example.com'); print_r($data); ?>

Результат выполнения кода:

[ 'user' => [ 'name' => 'John', 'email' => 'old@example.com', ], ]

Значение осталось прежним, поскольку путь user.email уже существовал.

Пример

Функция также работает с массивами, где путь содержит звёздочку для работы со всеми элементами:

<?php $data = [ 'users' => [ ['name' => 'John'], ['name' => 'Jane'], ], ]; data_fill($data, 'users.*.email', 'default@example.com'); print_r($data); ?>

Результат выполнения кода:

[ 'users' => [ ['name' => 'John', 'email' => 'default@example.com'], ['name' => 'Jane', 'email' => 'default@example.com'], ], ]

Звёздочка позволила заполнить поле email для каждого пользователя в массиве.

Пример

Функцию можно использовать для работы с объектами:

<?php $user = new stdClass(); $user->profile = new stdClass(); $user->profile->name = 'John'; data_fill($user, 'profile.email', 'john@example.com'); var_dump($user); ?>

Результат выполнения кода:

object(stdClass)#1 (1) { ["profile"]=> object(stdClass)#2 (2) { ["name"]=> string(4) "John" ["email"]=> string(16) "john@example.com" } }

Функция добавила свойство email в объект по указанному пути.

Смотрите также

  • функция data_get,
    которая получает значение из массива или объекта по "точечному" пути
  • функция data_set,
    которая устанавливает значение по "точечному" пути, перезаписывая существующее
  • функция data_forget,
    которая удаляет элемент по "точечному" пути
  • класс Arr,
    который предоставляет множество методов для работы с массивами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить