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의 개선 모두에 대한 능숙함을 반영합니다.