PHP에서 외부 루프 한 번에 종료하기
PHP에서 두 개 이상의 루프가 서로 중첩되어 있을 때, 일반적인 break 문은 가장 안쪽 루프만 종료합니다. 하지만 break 뒤에 숫자를 붙이면 여러 겹의 루프를 동시에 빠져나올 수 있습니다.
break 2 사용하기
두 개의 중첩된 루프를 모두 종료하려면 다음과 같이 작성합니다.
break 2;
아래는 foreach 루프를 활용한 실제 예제입니다.
foreach(...) {
foreach(...) {
if (my_var_1.name == my_var_2)
break 2; // 가장 바깥쪽 foreach 루프까지 종료합니다
}
}break 2;는 현재 루프와 그 바깥쪽 루프, 총 두 개의 루프 실행을 즉시 멈춥니다. 마찬가지로 세 겹으로 중첩된 루프 전체를 종료하려면 break 3;을 사용하면 됩니다.
goto 문 사용하기 (PHP 5.3 이상)
PHP 버전이 5.3 이상이라면 goto 문을 사용하여 원하는 위치로 곧바로 이동하는 방법도 있습니다.
foreach (...) {
foreach (...) {
if (my_var_1.name == my_var_2)
goto top;
}
}
top:위 코드에서 조건이 만족되면 goto top;이 실행되어 프로그램 흐름이 top: 라벨로 이동하면서 두 루프를 모두 벗어나게 됩니다.
정리
- break 2; — 중첩된 두 개의 루프를 동시에 종료하는 가장 간결하고 권장되는 방법입니다.
- goto 문 — PHP 5.3부터 지원되며, 라벨이 지정된 지점으로 제어 흐름을 이동시켜 루프를 탈출할 수 있습니다.
일반적으로는 코드 가독성과 유지보수성을 고려할 때 break 2; 방식을 사용하는 것이 좋습니다. 단, 루프가 복잡하게 얽혀 있거나 함수 내에서 즉시 반환해야 하는 상황이라면 goto 대신 별도의 함수로 분리하거나 플래그 변수를 활용하는 구조적 접근도 함께 검토해 보세요.