例如,如果我有一个对象,它的属性是一个包含两个对象的数组我尝试这样做
return (array) $object;
$object变成一个包含两个对象的数组。是否有一种简单的方法可以将对象及其所有嵌套对象转换为数组,而无需逐个转换?
如果你不确定,如果对象有另一个对象,那么首先尝试将对象转换为数组使用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;
}
简单的递归函数
function objtoarr ($vars) {
if (is_object($vars)) {
$d = get_object_vars($vars);
}
return is_array($vars) ? array_map('objtoarr', $vars) : $vars;
}
工作小提琴