diff --git a/base.php b/base.php index 06f24c36..2a983885 100644 --- a/base.php +++ b/base.php @@ -974,8 +974,15 @@ function recursive($arg,$func,$stack=[]) { // skip inaccessible properties #350 if (!$it && !isset($arg->$key)) continue; - $arg->$key=$this->recursive( - $val,$func,array_merge($stack,[$arg])); + $value = $this->recursive( + $val, $func, array_merge($stack, [$arg]) + ); + + if ($arg instanceof \ArrayObject) { + $arg[$key] = $value; + } else { + $arg->$key = $value; + } } } return $arg;