equals($right); } if (\is_array($left) && \is_array($right)) { return self::deeplyEquals($left, $right); } return $left === $right; } /** * @param array $left * @param array $right */ private static function deeplyEquals(array $left, array $right) : bool { if ($left === $right) { return true; } if (\count($left) !== \count($right)) { return false; } foreach ($left as $key => $value) { if (!isset($right[$key])) { return false; } if (!self::equals($value, $right[$key])) { return false; } } return true; } }