On Tue, Apr 7, 2026, at 5:27 PM, Rowan Tommins [IMSoP] wrote: > On 07/04/2026 17:20, Larry Garfield wrote: >> We've updated the RFC to address the break question (new section), the >> continue question (which is now a secondary vote) > > > You are still relying on an incorrect explanation of the relationship > between "switch" and "continue": > >> This behavior is due to a quirk of PHP's design, where `switch` is treated >> as a looping structure, which most languages do not. > > > > "continue" is counted for switch statements not because it is "treated > as a loop", but because PHP has numbered break and continue targets. > Numbering break targets differently from continue targets would be > extremely confusing, so they have to target the same list of constructs. > > There was strong consensus on this point in the previous discussion.
Quoting from the Nikita post that is linked from the RFC: --- a) In PHP "switch" is considered a looping structure, for this reason "break" and "continue" both apply to "switch", as aliases. For PHP, these are reasonable semantics, as PHP supports multi-level breaks. It would be very questionable if "break N" and "continue N" could refer to different loop structures just because there is a "switch" involved somewhere. --- Switch being considered a looping structure does qualify as a "quirk" in my book. If we want break/continue to still always have the same numbering, then "do the same as switch, even though it is a Warning" is the only option. Not having an early-success syntax at all is not an option on the table. --Larry Garfield
