1

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?

Community
  • 1
  • 1
JMC
  • 1,700
  • 7
  • 25
  • 34

2 Answers2

7

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;
Sammitch
  • 30,782
  • 7
  • 50
  • 77
1

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']]]));
Sammitch
  • 30,782
  • 7
  • 50
  • 77
Jakub A.
  • 201
  • 3
  • 3