instanceof DateTimeZone is just wrong. drop that whole branch, TZ only saves the timezone from a DateTime object, infering TYPE::DECIMAL sounds dangerous to me, i would drop that one aswell. The array check has a bug, you call key() and then do nothing with the $key instaed check is_integer on the $value again, which is always an array from the previous check.
instanceof DateTimeZone is just wrong. drop that whole branch, TZ only saves the timezone from a DateTime object, infering TYPE::DECIMAL sounds dangerous to me, i would drop that one aswell. The array check has a bug, you call key() and then do nothing with the $key instaed check is_integer on the $value again, which is always an array from the previous check.