Предупреждение: создание объекта по умолчанию из пустого значения (типичное решение, не решающее проблему)

ПРИМЕЧАНИЕ. Я читал другие темы по stackru о том, как решить эту проблему: Создание объекта по умолчанию из пустого значения в PHP?

По какой-то причине я все еще получаю предупреждение: Создание объекта по умолчанию из пустого значения

Я попробовал несколько вещей, чтобы исправить предупреждение:

$data = new stdClass();
$data->result->complex->first_key = $old_data->result->complex;

также попробовал:

$data->result->complex = new stdClass();
$data->result->complex->first_key = $old_data->result->complex;

Все еще получите предупреждение: Создание объекта по умолчанию из пустого значения в номере строки новой инициализации stdClass() выше.

Желаемый результат: как правильно инициализировать новый пустой объект?

2 ответа

Решение

Если вы хотите избежать предупреждения, вам нужно предварительно создать каждый уровень:

$data = new stdClass();
$data->result = new stdClass();
$data->result->complex = new stdClass();
$data->result->complex->first_key = $old_data->result->complex;

Вам все еще не хватает "первого" пустого объекта

$data->result = new stdClass();

Всего можно сделать:

$data = (object)['result' => (object)['complex' => (object)['first_key' => 'value']]];

Или:

$data = json_decode(json_encode(['result' => [complex' => ['first_key' => 'value']]]));
Другие вопросы по тегам