如何将对象及其所有属性转换为数组?

时间:2015-10-09 13:34:14

标签: php arrays object type-conversion

例如,如果我有一个具有属性的对象,该属性是两个对象的数组,我尝试这样做:

return (array) $object;

$ object成为一个包含两个对象数组的数组。 有没有一种简短的方法可以将对象及其所有嵌套对象转换为数组,而无需单独转发每个对象?

2 个答案:

答案 0 :(得分:0)

以递归方式执行此操作的简单功能

 function objtoarr ($vars) {
     if (is_object($vars)) {
        $d = get_object_vars($vars);
     }

     return is_array($vars) ? array_map('objtoarr', $vars) : $vars;
 }

Working fiddle

答案 1 :(得分:0)

如果你不确定,如果对象有另一个对象,那么首先尝试使用for循环将对象转换为数组检查元素是对象然后重复该过程,直到元素不是对象。 查看下面的代码:

function toArray($obj)
{
    if (is_object($obj)) 
        $obj = (array)$obj;
    if (is_array($obj)) {
        $new = array();
        foreach ($obj as $key => $val) {
            $new[$key] = toArray($val);
        }
    } else {
        $new = $obj;
    }
    return $new;
}