Skip to content

Incorrect behavior of ForeachToArrayAllRector #9240

@lolistream

Description

@lolistream

Bug Report

Subject Details
Rector version last dev-main
Installed as composer dependency

Minimal PHP Code Causing Issue

See https://getrector.com/demo/18cbf3e6-16e2-49d3-bfe7-6c0a689d1a3d

<?php

$filters = [];
$match = true;
foreach ($filters as $k => $v) {
    if (!isset($params[$k]) || (string) $params[$k] !== (string) $v) {
        $match = false;
        break;
    }
}

Responsible rules

  • ForeachToArrayAllRector

Expected Behavior

Rector doesn't preserve key in foreach loop.
Should rewrite to $match = array_all($filters, fn($v, $k) => ...);

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions