可能重复:
将对象转换为数组
假设我有一个这样的数组:(请注意,某些方法/对象可能受到保护,因此必须在自己的类中访问它们)
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 替换为 objectname 可能有效,但最好创建如下内容:
array(
0=> array(
objectname=> array(
...blah blah
)
)
)