PHP는 표준 제어 흐름 구문을 갖추고 있습니다 — 조건문(, , ), 반복문(, , ), 분기(, ) — 여기에 배열용 와 현대적인 표현식 같은 독특한 기능 몇 가지가 더해집니다.
ifswitchmatchforforeachwhilebreakcontinueforeachmatch<?php
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} else {
$grade = "F";
}
// 삼항 연산자와 널 병합
$status = $age >= 18 ? "adult" : "minor";
$name = $input ?? "default"; // ?? — null/미설정 시 기본값 사용 (PHP 7+)
$value ??= "x"; // ??= null이면 할당 (PHP 7.4)
**널 병합 연산자 ??**는 PHP에서 기본값을 위해 많이 사용됩니다(왼쪽이 null이거나 미설정이면 오른쪽을 반환) — isset() 검사보다 깔끔합니다.
switch ($day) {
case "Sat":
case "Sun":
$type = "weekend"; break; // ⚠️ break가 필요함, 아니면 폴스루(fall-through)
default:
$type = "weekday";
}
// match (PHP 8) — 더 깔끔: 값을 반환, 엄격한 비교, 폴스루 없음
$type = match($day) {
"Sat", "Sun" => "weekend", // 여러 값, break 불필요
default => "weekday",
};
match 표현식(PHP 8)은 switch에 비해 현대적인 개선입니다. 값을 반환하고, 엄격한(===) 비교를 사용하며, 폴스루가 없습니다(break 불필요) — 새 코드에서 선호됩니다.
for ($i = 0; $i < 10; $i++) { }
foreach ($items as $item) { } // 배열 값 순회
foreach ($map as $key => $value) { } // 키 + 값 — 배열을 위한 PHP 관용구
while ($condition) { }
do { } while ($condition);
foreach는 PHP의 보편적인 배열을 순회하는 데 가장 많이 쓰이는 관용적 반복문입니다(연관 배열에는 $key => $value 형태).
foreach ($items as $item) {
if ($item->skip) continue; // 다음 반복으로 건너뛰기
if ($item->stop) break; // 반복문 탈출
}
제어 흐름은 로직을 표현하는 기본 메커니즘이며 모든 프로그램에서 사용되므로, PHP의 구문을 이해하는 것은 기본적인 일상 지식입니다.
대부분은 표준이지만 몇 가지 PHP 특유의 요점이 중요합니다. **foreach**는 PHP의 어디에나 있는 배열을 순회하는 관용적이고 지배적인 반복문이며(맵에는 $key => $value 형태), 널 병합 연산자 ??(및 ??=)는 깔끔한 기본값 처리에 많이 사용됩니다(뚜렷한 PHP 관용구). 또한 현대적인 match 표현식(PHP 8)은 오류가 나기 쉬운 switch에 대한 중요한 개선으로 — 값을 반환하고, 엄격한 비교를 사용하며, 폴스루 버그(break를 잊는 고전적 switch 함정)를 제거합니다.
이 구문들을 알고, 현대적이고 더 안전한 형태(switch보다 match, 기본값에 ??)를 선호하는 것은 깔끔하고 관용적이며 버그 없는 PHP 로직을 작성하는 일상 지식이며, 기초와 현대 PHP의 개선 모두에 대한 능숙함을 반영합니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기