Просто введите его
$array = (array) $yourObject;
С http://www.php.net/manual/en/language.types.array.php
Если объект преобразуется в массив, результатом является массив, элементы которого являются свойствами объекта. Ключи являются именами переменных-членов, с несколькими заметными исключениями: целочисленные свойства недоступны; закрытые переменные имеют имя класса, добавленное к имени переменной; Защищенные переменные имеют «*» перед именем переменной. Эти предварительно добавленные значения имеют нулевые байты с обеих сторон.
Пример: простой объект
$object = new StdClass;
$object->foo = 1;
$object->bar = 2;
var_dump( (array) $object );
Выход:
array(2) {
'foo' => int(1)
'bar' => int(2)
}
Пример: сложный объект
class Foo
{
private $foo;
protected $bar;
public $baz;
public function __construct()
{
$this->foo = 1;
$this->bar = 2;
$this->baz = new StdClass;
}
}
var_dump( (array) new Foo );
Вывод (с \ 0s отредактирован для ясности):
array(3) {
'\0Foo\0foo' => int(1)
'\0*\0bar' => int(2)
'baz' => class stdClass#2 (0) {}
}
Вывод с var_export
вместо var_dump
:
array (
'' . "\0" . 'Foo' . "\0" . 'foo' => 1,
'' . "\0" . '*' . "\0" . 'bar' => 2,
'baz' =>
stdClass::__set_state(array(
)),
)
При такой установке типов глубокое приведение графа объекта не выполняется, и вам необходимо применить нулевые байты (как объяснено в ручной цитате) для доступа к любым непубличным атрибутам. Так что это лучше всего работает при приведении объектов StdClass или объектов только с открытыми свойствами. Для быстрой и грязной (то, что вы просили) это хорошо.
Также смотрите этот подробный пост в блоге: