본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP break문 — foreach 반복 중단 완전 정리

by 왕진 2026. 6. 12.
반응형

 

 

Web Development · PHP break

PHP break문 —
foreach 반복을 강제로 빠져나오기

조건이 충족되면 즉시 반복을 끝내는 제어 키워드
시작 오늘 분석할 코드

5명의 회원 이름이 들어 있는 배열에서 앞에서 3명까지만 출력하고 나머지는 보지 않는 코드다. 핵심은 break 키워드 — 반복 중간에 만나면 foreach를 즉시 종료시킨다.

<?php $member[0] = "○철수"; $member[1] = "○영희"; $member[2] = "○길동"; $member[3] = "○정자"; $member[4] = "○희동"; $i = 1; $limit = 3; foreach($member as $key => $value){ if($i > $limit){ print "반복을 빠져나옵니다.<BR>"; break; } print "이름 : $value"; print "<BR>"; $i ++; } ?>
실제 출력 결과
이름 : ○철수
이름 : ○영희
이름 : ○길동
반복을 빠져나옵니다.
용어 용어 정리
break현재 반복문을 즉시 빠져나가는 키워드
foreach배열 원소를 하나씩 꺼내 반복
$key배열 원소의 인덱스(또는 연관키)
$value배열 원소의 값
$i반복 횟수를 세는 카운터 변수
$limit출력 한도 — 비교용 기준값
if조건이 참일 때만 블록 실행
$i++$i = $i + 1 — 1 증가시키기

1 왜 break가 필요한가?

foreach는 기본적으로 배열 끝까지 모든 원소를 한 번씩 훑는다. 하지만 종종 "조건이 만족되면 더 이상 볼 필요 없다"는 상황이 생긴다.

예시 시나리오
· 검색 결과에서 처음 일치하는 1건만 찾으면 됨
· 회원 목록 중 앞에서 N명만 미리보기로 출력
· 재고가 0인 상품을 처음 발견하는 순간 알림

이때 끝까지 도는 건 낭비다. break는 "여기서 멈추고 반복 밖으로 나가라"는 즉시 종료 명령이다.


2 카운터 $i와 한도 $limit
왜 두 변수를 따로 만드는가?

이 코드는 "3명까지만 출력"이라는 규칙을 코드로 옮기기 위해 두 변수를 사용한다.

변수 역할 값 변화
$i 지금 몇 번째 반복인지 세는 카운터 1 → 2 → 3 → 4 (반복마다 +1)
$limit "여기까지만"이라는 한도값 3 (변하지 않음)
초깃값을 $i = 1로 잡았기 때문에 "1번째, 2번째, 3번째"라는 사람 감각과 맞다. $i = 0으로 시작했다면 비교 조건도 $i >= $limit으로 바꿔야 한다.

 

3 if($i > $limit) — 끊는 시점

매 반복 시작 직후 가장 먼저 검사하는 조건이다.

if ($i > $limit) { print "반복을 빠져나옵니다.<BR>"; break; }

핵심은 비교 연산자. > (초과)와 >= (이상)는 한 명 차이를 만든다.

$i > $limit (이 코드)
$i가 4일 때 처음 참 → 3명 출력 후 종료
결과: 철수, 영희, 길동
$i >= $limit
$i가 3일 때 이미 참 → 2명만 출력 후 종료
결과: 철수, 영희

반응형
4 break의 동작 — 그 자리에서 즉시 탈출

break를 만난 순간 PHP는 그 줄 아래의 코드는 무시하고, foreach 블록의 닫는 중괄호 } 바깥으로 점프한다.

foreach (…) { if (조건) { print "끝!"; break; ← 여기서 즉시 점프 } print "이름 : …"; ← 실행 안 됨 $i++; ← 실행 안 됨 } print "다음 줄"; ← 여기로 바로 넘어옴
※ 주의: break현재 반복문 1개만 빠져나간다. 함수 전체를 끝내려면 return을 써야 한다.

5 반복 흐름 단계별 추적
1
$i = 1, $value = "○철수"1 > 3 거짓 → if 통과 → "이름 : ○철수" 출력 → $i = 2
2
$i = 2, $value = "○영희"2 > 3 거짓 → "이름 : ○영희" 출력 → $i = 3
3
$i = 3, $value = "○길동"3 > 3 거짓 (3은 3보다 크지 않음) → "이름 : ○길동" 출력 → $i = 4
4
$i = 4, $value = "○정자"4 > 3 참 → "반복을 빠져나옵니다." 출력 → break 실행
5
foreach 종료○정자, ○희동은 처리되지 않고 끝

6 break vs continue — 헷갈리는 두 형제
break
반복문을 완전히 끝낸다
남은 원소들 더 이상 처리 안 함
루프 바깥으로 빠져나감
continue
이번 회차만 건너뛴다
다음 원소부터 다시 진행
반복문 자체는 계속 살아 있음
전화번호부에서 한 명을 찾는 중
· break = 그 사람을 찾았으니 책을 덮는다
· continue = 이 페이지엔 없으니 다음 페이지로 넘긴다

7 자주 하는 실수
실수 증상 해결
$i++를 if 위에 둠 한도가 한 명씩 어긋남 증가는 출력 직후, 또는 비교식을 보정
$i >= $limit로 작성 의도보다 1명 적게 출력 인원 정확히 N명이면 >가 자연스러움
break 대신 exit 스크립트 전체가 끝남 반복만 끊을 땐 반드시 break
중첩 반복에서 안쪽만 break 바깥 루프는 계속 돈다 두 단계 빠지려면 break 2;
$i 초기화를 빼먹음 이전 값이 남아 비교 오류 foreach 진입 전에 반드시 초기화

8 알아두면 좋은 — break 2;

중첩된 반복문에서 여러 단계를 한 번에 빠져나갈 수 있다.

foreach ($a as $x) { foreach ($b as $y) { if ($y == "stop") { break 2; ← 두 루프 모두 종료 } } }
※ 숫자의 의미
  • break; = break 1; → 가장 가까운 루프 1개
  • break 2; → 바깥쪽 루프까지 2개 동시 종료
  • 실무에서는 가독성을 위해 함수로 빼고 return을 더 자주 쓴다

핵심 한 줄 요약

break현재 반복문을 즉시 빠져나가는 제어 키워드
동작만나는 순간 남은 원소 무시 + 루프 바깥으로 점프
$i반복 횟수 카운터 — 매 회차 +1
$i > $limit초과면 종료 → 정확히 limit개만 출력
vs continuebreak는 끝, continue는 이번만 건너뛰기
break 2;중첩 루프 두 단계를 한 번에 종료
break vs exitbreak는 루프 종료, exit는 스크립트 종료
반응형

댓글