Warning: Creating default object from empty value

2019-07-27 03:51发布

问题:

NOTE: I've read the other topics on stackoverflow about how to solve this issue: Creating default object from empty value in PHP?

For some reason I still get the Warning message: Creating default object from empty value

I've tried a few things to fix the warning:

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

also tried:

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

Still get the warning: Creating default object from empty value on the line number of the new stdClass() initialization above.

Desired Outcome: How can I properly initialize the new empty object?

回答1:

If you want to avoid the warning you'll need to pre-create each level:

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


回答2:

You are still missing "first" empty object

$data->result = new stdClass();

Whole can be done by:

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

Or by:

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