$v) { $cloned->$k = self::cloneItem($v); } return $cloned; } /** * @param mixed $item * @return mixed */ 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; } }