разница между продолжением 2 и разрывом во вложенных циклах

Я рефакторинг какой-то старый код и наткнулся на continue 2 это может быть легко заменено перерывом.

for($rows as $i){
for($columns as $j){
if( Helper::unicornExists($i, $j) ){
//continue 2;
break;
}
}
}

Если мы говорим, что continue 2 делает код более сложным и трудным для чтения,
есть ли веская причина использовать его (на 2 уровне) для вложенных циклов?

2

Решение

В этом конкретном примере кажется, что это одно и то же, и вам решать, как вы это предпочитаете. Одна причина, которую я вижу, чтобы сохранить continue 2 было бы, если в будущем развитии вашего проекта вы добавите что-то после внутреннего для

for($rows as $i){
for($columns as $j){
if( Helper::unicornExists($i, $j) ){
//continue 2;
break;
}
}
echo 'done with ', $i, PHP_EOL;
}

Вы должны думать, что вы ожидаете, если единорог существует. Вы хотите пропустить только внутренний цикл, и вот что break будет делать, или вы хотите пропустить внешний, и это то, что continue 2 сделал бы.

2

Другие решения

Других решений пока нет …