From 4e2c1b912e24a7370841204521755d65b52773c8 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo <1102197+priyadi@users.noreply.github.com> Date: Wed, 1 May 2024 20:56:10 +0700 Subject: [PATCH] if target is a list, renumber keys after deletion --- .../TraversableToArrayAccessTransformer.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Transformer/Implementation/TraversableToArrayAccessTransformer.php b/src/Transformer/Implementation/TraversableToArrayAccessTransformer.php index d1ed1a3..c1149e5 100644 --- a/src/Transformer/Implementation/TraversableToArrayAccessTransformer.php +++ b/src/Transformer/Implementation/TraversableToArrayAccessTransformer.php @@ -188,11 +188,24 @@ private function eagerTransform( // the values array if (is_array($values) && is_iterable($target)) { + /** + * @psalm-suppress RedundantConditionGivenDocblockType + */ + $isList = is_array($target) && array_is_list($target); + foreach ($target as $key => $value) { if (!in_array($value, $values, true)) { unset($target[$key]); } } + + // renumber array if it is a list + + /** @psalm-suppress RedundantConditionGivenDocblockType */ + if (is_array($target) && $isList) { + /** @psalm-suppress RedundantFunctionCall */ + $target = array_values($target); + } } return $target;