Предупреждение: создание объекта по умолчанию из пустого значения (типичное решение, не решающее проблему)
ПРИМЕЧАНИЕ. Я читал другие темы по 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']]]));