将PHP对象转换为关联数组

我正在将一个API集成到我的网站中,该API处理存储在对象中的数据,而我的代码是使用数组编写的

我想要一个快速而肮脏的函数来将对象转换为数组

只要打字就行了

$array=(array)$yourObject;

阵列

如果将对象转换为数组,则结果是一个数组,其元素是对象的属性。键是成员变量名,但有几个显著的例外:整数属性不可访问;私有变量的类名在变量名前面;受保护变量的变量名前面有一个“*”。这些带前缀的值两边都有空字节

示例:简单对象

$object=新的StdClass;
$object->foo=1;
$object->bar=2;
变量转储((数组)$object);

输出:

数组(2){
‘foo’=>int(1)
'bar'=>int(2)
}

示例:复杂对象

类Foo
{
私家车$foo;
受保护的$bar;
公费$baz;
公共函数构造()
{
$this->foo=1;
$this->bar=2;
$this->baz=新标准类;
}
}
变量转储((数组)新Foo);

输出(为清晰起见,在中编辑了\0s):

数组(3){
'\0Foo\0Foo'=>int(1)
'\0*\0bar'=>int(2)
‘baz’=>类stdClass#2(0){
}

使用var\u导出输出,而不是var\u转储

数组(
'.'.\0'.'Foo'.'\0'.'Foo'=>1,
'.'.\0'.*'.'\0'.'条形图'=>2,
‘baz’=>
stdClass::\设置\状态(数组)(
)),
)

这种类型转换方式不会对对象图进行深度转换,您需要应用空字节(如手册引用中所述)来访问任何非公共属性。因此,在强制转换StdClass对象或仅具有公共属性的对象时,这种方法效果最好。快而脏(你要求的)没关系

另请参阅这篇深入的博文:

  • 快速PHP对象到数组的转换

发表评论