본문 바로가기

비개발자의 개발 일지

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

시리즈 보기
php

PHP 삼항 연산자 — ?: 한 줄 if-else 완전 정리

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

 

 

Web Development · PHP

PHP 삼항 연산자 —
?: 한 줄로 if-else

간단한 분기를 짧게 표현 — 변수 대입에 자주 씀
시작 오늘 분석할 코드

나이를 보고 "어른"인지 "아이"인지를 한 줄로 판단한다. if-else 4~5줄을 한 줄로 압축한 형태.

<?php $age = 19; $adult_age = 20; $adult_check = ($adult_age <= $age) ? "어른" : "아이"; print $adult_check . " 입니다."; ?>
실제 출력 미리보기
아이 입니다.

용어 핵심 키워드
조건 ? A : B조건 참이면 A, 거짓이면 B
"삼항"3개 피연산자 (조건/A/B)
표현식값을 반환 — 변수에 대입 가능
단축 ?: (PHP 5.3+)$a ?: $b — $a 참이면 $a, 아니면 $b
?? null 합병 (PHP 7+)$a ?? $b — $a null이면 $b
중첩 시 ()우선순위 명확히

1 삼항 연산자의 모양
// 형태: 조건 ? 참일 때 값 : 거짓일 때 값 $result = ($age >= 20) ? "어른" : "아이";

본 코드의 조건은 $adult_age <= $age20 <= 19로 거짓이다. 그래서 결과는 "아이".


2 if-else와 비교

if-else (4줄)

if ($age >= 20) { $result = "어른"; } else { $result = "아이"; }

삼항 (1줄)

$result = ($age >= 20) ? "어른" : "아이";
💡 삼항이 적합한 곳변수에 두 값 중 하나를 대입하는 경우. 본 코드처럼 $result = ... ? A : B 형태가 전형적.

3 단축 ?: (Elvis 연산자)

PHP 5.3부터 중간 부분을 생략할 수 있다. $a ?: $b"$a가 truthy면 $a, 아니면 $b"이다.

$name = $user_input ?: "손님"; // $user_input이 "" 또는 null이면 "손님" 사용

 

반응형

 

4 ?? null 합병 (PHP 7+)

?:모든 falsy 값(0, "", null)을 잡는다면 ??오직 null/미정의만 잡는다.

$user = $_GET['user'] ?? "guest"; // $_GET['user']가 없거나 null이면 "guest" // $_GET['user']가 "0"이면? → "0" 그대로 사용 (?:와 다름)
실무 팁 — 사용자 입력 검증엔 ??가 안전하다. 0이나 빈 문자열도 의미 있는 값일 수 있어서다.

5 중첩 — 가능하지만 가독성 ↓
// 중첩 — 읽기 어려움 $grade = ($score >= 90) ? "A" : (($score >= 80) ? "B" : (($score >= 70) ? "C" : "F"));
3개 이상 분기는 if-else 또는 switch — 삼항을 중첩하면 빠르게 읽기 어려워진다. 두 가지 분기일 때만 권장.

6 자주 하는 실수
  • 괄호 누락 → 우선순위 헷갈림 → 항상 (조건)으로 감싸기
  • ?:와 ?? 혼동 → falsy 모두 잡고 싶으면 ?:, null만 잡으면 ??
  • 3개 이상 분기에 사용 → if-else로
  • 괄호 안에 또 ? : → PHP 7.4+에서는 명시적 괄호 강제

핵심 한 줄 요약

조건 ? A : B참이면 A, 거짓이면 B
표현식변수 대입에 사용
$a ?: $btruthy면 $a, 아니면 $b
$a ?? $bnull만 잡음 (PHP 7+)
2개 분기까지3개 이상은 if-else

Tags

#PHP #삼항연산자 #ternary #null-coalescing #elvis #if-else #조건식 #백엔드 #CSS #HTML #웹개발 #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, 삼항연산자, ternary, null-coalescing, elvis, if-else, 조건식, 백엔드, CSS, HTML, 웹개발, 티스토리
반응형

댓글