반응형
Web Development · PHP if-else
PHP if-else 조건문 —
"성공이면 A, 아니면 B" 분기 처리
if만으로는 부족할 때 — 두 갈래 중 하나는 반드시 실행
시작 오늘 분석할 코드
앞 예제 if1.php와 같은 로그인 코드지만, 실패했을 때의 처리가 추가됐다. else가 붙으면 "조건이 거짓일 때 실행할 코드"를 명시할 수 있다.
<?php $username = "user"; $password = "pass"; $db_data["username"] = "user"; $db_data["password"] = "pass"; if($db_data["username"] == $username && $db_data["password"] == $password){ // 회원 페이지 표시 print "회원 페이지입니다."; }else{ // 로그인실패 처리 print "로그인에 실패하였습니다."; } ?>
실제 출력 미리보기
회원 페이지입니다.
→ 입력값과 DB값이 일치하므로 if 본문이 실행되고 else는 건너뛴다. 만약 password가 "wrong"이었다면 "로그인에 실패하였습니다."가 출력된다.
용어 용어 정리
if조건이 참일 때 실행할 블록
else"그렇지 않으면" — if 조건이 거짓일 때 실행
분기조건에 따라 갈라지는 흐름
참 / 거짓true / false — 조건 평가 결과
==값 비교 (느슨한 동등 비교)
&&AND — 두 조건 모두 참
{ }실행 영역(블록) — 여러 줄 가능
$db_data연관 배열 — DB에서 가져왔다는 가정
1 if-else의 기본 구조
if ( 조건 ) { 조건이 참일 때 실행 } else { 조건이 거짓일 때 실행 }
둘 중 정확히 하나만 실행된다 — 둘 다 실행되거나 둘 다 건너뛰는 일은 없다. "꼭 양자택일이 필요한 상황"에 쓴다.
if만 있으면 "조건이 거짓일 때는 아무 일도 안 일어남". if-else는 "거짓일 때도 명확히 무언가 한다." 둘은 의도가 다르다.
2 if vs if-else — 어떤 차이?
if 단독
조건 참 → A 실행
조건 거짓 → 아무것도 안 함
예: "로그인 됐을 때만 환영 메시지"
조건 거짓 → 아무것도 안 함
예: "로그인 됐을 때만 환영 메시지"
if-else
조건 참 → A 실행
조건 거짓 → B 실행
예: "로그인 성공 / 실패 메시지"
조건 거짓 → B 실행
예: "로그인 성공 / 실패 메시지"
// if 단독 if($logged_in) print "환영합니다"; // 로그인 안 된 사용자는 화면이 텅 비어 있음 // if-else if($logged_in){ print "환영합니다"; }else{ print "로그인이 필요합니다"; } // 모든 사용자에게 무조건 어떤 메시지든 보여줌
3 로그인 분기 흐름도
[ 입력값 vs DB값 비교 ] ↓ ┌────────┴────────┐ ↓ ↓ [ 참 ] [ 거짓 ] ↓ ↓ "회원 페이지 "로그인에 입니다." 실패..." ↓ ↓ └─────┬───────────┘ ↓ [ 다음 코드로 ]
※ 두 갈래의 의미
- 성공 경로: 회원 페이지 출력 → 사용자에게 정상 응답
- 실패 경로: 실패 메시지 출력 → 사용자에게 재시도 안내
- 둘 다 "사용자에게 어떤 응답이 가긴 한다"는 점이 핵심
4 if-else 체이닝 — elseif
두 가지 분기로 부족하면 elseif로 더 많은 분기를 만들 수 있다. 위에서부터 차례로 검사하다가 처음 참이 된 분기 하나만 실행한다.
if($score >= 90){ print "A"; }elseif($score >= 80){ print "B"; }elseif($score >= 70){ print "C"; }else{ print "F"; } // 위에서부터 차례로 → 처음 참이 된 가지만 실행
| 분기 종류 | 키워드 | 역할 |
|---|---|---|
| 최초 검사 | if |
첫 번째 조건 |
| 추가 검사 | elseif 또는 else if |
이전 모두 거짓일 때만 검사 |
| 최종 폴백 | else |
위 모든 게 거짓일 때 (선택) |
반응형
5 if-else 끝의 흐름
if 또는 else 둘 중 하나가 끝나면 else 블록 다음 코드로 이어진다. 즉 if-else는 한 덩어리고, 끝나면 평소 흐름으로 복귀한다.
if(...){ ... }else{ ... } // ↑ if든 else든 끝나면 여기로 옴 print "다음 코드";
※ 자바스크립트의
return처럼 함수 자체를 끝내는 게 아니다 — 단지 if-else 블록이 끝날 뿐. 함수 종료는 return이나 exit가 별도로 필요.6 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
}else{ 사이에 다른 코드 |
Parse error | else는 반드시 if 블록 직후 |
else if를 else if로 띄어 씀 |
(둘 다 동작) 단, elseif 권장 |
일관성 있게 한 가지 형태 선택 |
else에 조건 붙이려 함 |
Parse error | else에는 조건 없음 — 조건 필요하면 elseif |
| 중괄호 누락 | else가 엉뚱한 if에 붙음 (dangling else) | 모든 분기에 중괄호 사용 |
=와 == 혼동 |
의도와 다른 분기 실행 | 비교는 반드시 == 또는 === |
7 if vs 삼항 연산자 vs match
"이거 아니면 저거" 같은 단순 분기는 더 짧게 쓸 방법이 있다. 가독성과 상황에 따라 골라 쓴다.
// 1) if-else (본 코드) if($a == $b){ print "yes"; }else{ print "no"; } // 2) 삼항 연산자 (간단한 값 선택) print ($a == $b) ? "yes" : "no"; // 3) Null 합병 연산자 (PHP 7+) $name = $input ?? "guest"; // 4) match (PHP 8+, 여러 분기를 깔끔하게) $grade = match(true){ $score >= 90 => "A", $score >= 80 => "B", default => "F", };
핵심 한 줄 요약
if-else두 갈래 중 정확히 하나만 실행
if 단독거짓이면 아무 일도 안 함
elseif3개 이상의 분기를 만들 때
else조건 없음 — 위 모두 거짓일 때 실행
중괄호실무에서는 항상 사용 — dangling else 방지
단순 분기삼항 연산자(?:), match(PHP 8+) 활용 가능
로그인 패턴성공 / 실패 모두 응답하는 게 표준
반응형
'php' 카테고리의 다른 글
| PHP for + count() — 배열 길이만큼 반복하는 패턴 완전 정리 (0) | 2026.06.12 |
|---|---|
| PHP 중첩 if-else — type 분기로 배우는 다중 분기 완전 정리 (0) | 2026.06.12 |
| PHP if 조건문 — 로그인 검증 예제로 배우는 && 연산자 (0) | 2026.06.12 |
| PHP foreach 반복문 — 배열 순회 전용 완전 정리 (0) | 2026.06.12 |
| PHP for 반복문 — 초기값·조건·증가식 3박자 완전 정리 (0) | 2026.06.12 |
왕진 블로그

댓글