From 106c7609dece428fea56cde02980780a9fa31bd3 Mon Sep 17 00:00:00 2001 From: Stefan Hagspiel Date: Thu, 8 Jan 2026 20:00:09 +0100 Subject: [PATCH 1/2] Add check for append in foreach items assignment --- .../Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rules/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php b/rules/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php index 07881700cae..2727588bace 100644 --- a/rules/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php +++ b/rules/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector.php @@ -104,6 +104,10 @@ public function refactor(Node $node): ?Node } if ($this->shouldSkip($stmt, $emptyArrayVariables)) { + if ($this->isAppend($stmt, $emptyArrayVariables)) { + return null; + } + continue; } From a9e26ced21b84b492fe336a1dfa59b5a38c7ba0f Mon Sep 17 00:00:00 2001 From: Stefan Hagspiel Date: Thu, 8 Jan 2026 20:27:58 +0100 Subject: [PATCH 2/2] Add test fixture for skipping assignment before conditional foreach --- ...gned_before_in_conditional_foreach.php.inc | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_assigned_before_in_conditional_foreach.php.inc diff --git a/rules-tests/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_assigned_before_in_conditional_foreach.php.inc b/rules-tests/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_assigned_before_in_conditional_foreach.php.inc new file mode 100644 index 00000000000..f7221fe3d67 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Foreach_/ForeachItemsAssignToEmptyArrayToAssignRector/Fixture/skip_assigned_before_in_conditional_foreach.php.inc @@ -0,0 +1,26 @@ +getItems() as $item) { + if ($item->hasGroup()) { + $groupList[] = ['id' => $item->getGroupId()]; + } else { + $list[] = ['id' => $item->getId()]; + } + } + + foreach ($groupList as $group) { + $list[] = $group; + } + + return $list; + } +}