例如,如果我有一个具有属性的对象,该属性是两个对象的数组,我尝试这样做:
return (array) $object;
$ object成为一个包含两个对象数组的数组。 有没有一种简短的方法可以将对象及其所有嵌套对象转换为数组,而无需单独转发每个对象?
答案 0 :(得分:0)
以递归方式执行此操作的简单功能
function objtoarr ($vars) {
if (is_object($vars)) {
$d = get_object_vars($vars);
}
return is_array($vars) ? array_map('objtoarr', $vars) : $vars;
}
答案 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;
}