$v) { $cloned->$k = self::cloneItem($v); } return $cloned; } private static function cloneItem($item) { if (is_array($item)) { $cloned = []; foreach ($item as $i => $v) { $cloned[$i] = self::cloneItem($v); } return $cloned; } if ($item instanceof StdClass) { return self::clone($item); } if (is_object($item)) { return clone $item; } return $item; } }