Преобразование многомерного смешанного объекта и массива в массив при сохранении имен объектов в виде ключей - PHP [duplicate]

Возможный дубликат:

преобразовать объект в массив

Позволять'скажем, у меня есть такой массив: (Обратите внимание, что некоторые методы / объекты могут быть защищены, поэтому к ним нужно обращаться в их собственном классе)

array(
    0=> objectname{
        [method1:protected]=> array(
            ["key1"] => object2{
                [method2]=> array(
                    0 => "blah"
                )
            }
        )
    }
    1=> objectname{
        [method1:protected]=> array(
            ["key1"] => object2{
                [method2]=> array(
                    0 => "blah"
                )
            }
        )
    }
)

И я хотел преобразовать все это в массив. Я бы обычно использовал это:

protected function _object_to_array($obj){

    if(is_object($obj)) $obj = (array) $obj;

    if(is_array($obj)) {

        $new = array();
        foreach($obj as $key => $val) {
            $new[$key] = self::_object_to_array($val);
        }

    }else{

        $new = $obj;

    }

    return $new;

}

Проблема в том, что это не сохраняет имена объектов. Я хотел бы, чтобы имена объектов стали дополнительным ключом, который увеличивает размер массива. Например, замена 0 для имени объекта может сработать, но еще лучше создать что-то вроде этого:

array(
    0=> array(
        objectname=> array(
            ...blah blah
        )
    )
)

Ответы на вопрос(1)

Ваш ответ на вопрос