Skip to content

Array destructuring in foreach - conflict between SpaceBeforeComma & NoSpaceAfterComma #527

@VladaHejda

Description

@VladaHejda

Describe the bug

Destructuring an array for foreach - foreach ($data as [, , $value]) { - violates the Squiz.Arrays.ArrayDeclaration.SpaceBeforeComma ("Expected 0 spaces between "," and comma; 1 found")
But when "fixed" - foreach ($data as [,, $value]) { - the Squiz.Arrays.ArrayDeclaration.NoSpaceAfterComma is violated ("Expected 1 space between comma and ","; 0 found")
So this code cannot be written while using both sniffs together.

Code sample

class Foo
{
	/**
	 * @param list<array{int, int, int}> $data
	 */
	public function bar(array $data): int
	{
		$sum = 0;
		foreach ($data as [, , $value]) {
			$sum += $value;
		}

		return $sum;
	}
}

Versions

Operating System Windows 11
PHP version 8.3
PHP_CodeSniffer version 3.10.1
Install type Composer

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions