Всё-же расписано, нужно переменной, которая являлась объектом присвоить массив с помощью метода.
То есть $array['answers']=$array['answers']->toArray(); изначально работает так как задумано, но хочется выполнить это действие только вызовом метода, без явного присваивания.
В итоге строчка
$array['answers']=$array['answers']->toArray();
(метод toArray() возвращает массив)
должна стать
$array['answers']->toArray();
а результат остаться прежним.
Присвоение значения переменной не может произойти само по себе. Этим должен заниматься программист.
Вот код, в котором экземпляр класса сможет заменить сам себя на массив:
class Obj {
function __construct(protected &$myself) { }
function toArray() { $this->myself = ['test' => 'value']; }
};
$obj = new Obj($obj);
$values = [
'obj' => &$obj,
];
$obj->toArray();
print_r($values);
Несмотря на то, что это работает, делать так точно не стоит. Подобный код неоправданно сложно поддерживать другому человеку, т.к. где-то не понятно где будет происходить что-то не понятно что. И, что наиболее грустно, — не понятно зачем.