$array = [
'id' => $data->{'id'},
'name' => $data->{'name'},
...
];
@$data->{'id'}
$data['id']
??
$field1 = 'Habr';
$field2 = 'QnA';
$array = [
'id' => $data->xxx->yyy->id ?? null,
'name' => $data->{'name'} ?? 'untitled',
'site' => $data->$field1->$field2 ?? 'поиск';
];
если запрошенного поля нет, ошибку не бросает, а берет значение по умолчанию, которое после ??