PHP 치트시트
마지막 업데이트
Hello World 및 태그
PHP 코드는 <?php ... ?> 태그 안에 있으며, 바깥의 모든 것은 일반 출력으로 전송됩니다.
| 작업 | 문법 |
|---|---|
| PHP 열기 / 닫기 | <?php ... ?> |
| 텍스트 출력 | echo "Hello, World!"; |
| 서식 지정 출력 | printf("%d items", $n); |
| 짧은 echo (HTML 안) | <?= $name ?> |
| 한 줄 주석 | // comment 또는 # comment |
| 블록 주석 | /* comment */ |
| 문 종료 기호 | ; |
| 파일 실행 (CLI) | php index.php |
변수 및 타입
변수는 $로 시작하며 동적으로 타입이 지정됩니다.
| 작업 | 문법 |
|---|---|
| 변수 선언 | $name = "Ada"; |
| 상수 | const PI = 3.14; 또는 define("PI", 3.14); |
| 스칼라 타입 | int, float, string, bool |
| Null | $x = null; |
| 타입 확인 | gettype($x), is_int($x), is_array($x) |
| 타입 캐스팅 | (int) $str, (string) $num |
| 변수 존재 / 설정 여부 | isset($x), empty($x) |
| 문자열 보간 | echo "Hi $name"; |
문자열
큰따옴표는 변수를 보간하고, 작은따옴표는 리터럴입니다.
| 작업 | 문법 |
|---|---|
| 연결 | $a . $b |
| 길이 | strlen($s) |
| 대문자 / 소문자 | strtoupper($s), strtolower($s) |
| 부분 문자열 | substr($s, 0, 5) |
| 위치 찾기 | strpos($s, "x") |
| 치환 | str_replace("a", "b", $s) |
| 배열로 분할 | explode(",", $csv) |
| 배열 결합 | implode(",", $arr) |
| 공백 제거 | trim($s) |
| 문자열 서식 지정 | sprintf("%05.2f", $n) |
배열 (연관 배열 포함)
하나의 배열 타입이 인덱스 리스트와 키-값 맵을 모두 포함합니다.
| 작업 | 문법 |
|---|---|
| 인덱스 배열 | $nums = [1, 2, 3]; |
| 연관 배열 | $user = ["name" => "Ada", "age" => 30]; |
| 원소 접근 | $nums[0], $user["name"] |
| 추가 | $nums[] = 4; |
| 키 설정 | $user["role"] = "admin"; |
| 길이 | count($nums) |
| 키 확인 | isset($user["name"]), array_key_exists("name", $user) |
| 원소 제거 | unset($nums[1]); |
| 배열 병합 | array_merge($a, $b) |
| 키 => 값 순회 | foreach ($user as $k => $v) { ... } |
제어 흐름
조건문과 반복문은 C 스타일 문법을 따릅니다.
| 작업 | 문법 |
|---|---|
| if / elseif / else | if ($x > 0) { ... } elseif (...) { ... } else { ... } |
| 삼항 연산자 | $y = $x > 0 ? "pos" : "neg"; |
| 널 병합 | $name = $_GET["name"] ?? "guest"; |
| switch | switch ($day) { case 1: ...; break; default: ... } |
| for 반복문 | for ($i = 0; $i < 10; $i++) { ... } |
| while 반복문 | while ($x < 100) { ... } |
| foreach | foreach ($items as $item) { ... } |
| match 표현식 | $r = match($x) { 1 => "one", default => "?" }; |
| break / continue | break;, continue; |
함수
함수는 타입, 기본값, 가변 인자 매개변수를 선언할 수 있습니다.
| 작업 | 문법 |
|---|---|
| 기본 함수 | function add($a, $b) { return $a + $b; } |
| 타입이 지정된 매개변수와 반환 | function add(int $a, int $b): int { ... } |
| 기본값 | function greet($name = "guest") { ... } |
| 가변 인자 매개변수 | function sum(...$nums) { ... } |
| 참조로 전달 | function inc(&$x) { $x++; } |
| 익명 함수 | $f = function($x) { return $x * 2; }; |
| 화살표 함수 | $f = fn($x) => $x * 2; |
| 외부 변수 사용 | function() use ($n) { ... } |
슈퍼글로벌
모든 스코프에서 사용할 수 있는 내장 배열로, 대부분 요청 데이터를 위한 것입니다.
| 슈퍼글로벌 | 담는 내용 |
|---|---|
$_GET | URL의 쿼리 문자열 매개변수 |
$_POST | POST로 전송된 폼 데이터 |
$_REQUEST | $_GET, $_POST, $_COOKIE를 결합 |
$_SESSION | 사용자별 세션 데이터 (session_start() 이후) |
$_COOKIE | 브라우저가 보낸 쿠키 |
$_SERVER | 서버 및 요청 정보 (REQUEST_METHOD 등) |
$_FILES | 업로드된 파일 메타데이터 |
$_ENV | 환경 변수 |
자주 쓰는 배열 함수
PHP는 수백 개의 배열 도우미를 제공하며, 이것들이 핵심 일꾼입니다.
| 함수 | 기능 |
|---|---|
array_map($fn, $arr) | 모든 원소 변환 |
array_filter($arr, $fn) | 콜백이 true인 원소만 유지 |
array_reduce($arr, $fn, $init) | 단일 값으로 접기(fold) |
in_array($v, $arr) | 값이 있는지 확인 |
array_keys($arr) / array_values($arr) | 키 또는 값 가져오기 |
sort($arr) / rsort($arr) | 제자리 정렬 (오름 / 내림차순) |
usort($arr, $cmp) | 사용자 정의 비교자로 정렬 |
array_slice($arr, 1, 3) | 일부 추출 |
array_push($arr, $v) / array_pop($arr) | 끝에서 추가 / 제거 |
클래스 및 객체 지향(OOP)
PHP는 클래스, 상속, 인터페이스, 가시성 한정자를 지원합니다.
| 작업 | 문법 |
|---|---|
| 클래스 정의 | class User { ... } |
| 가시성이 있는 프로퍼티 | public string $name; |
| 생성자 | function __construct($name) { $this->name = $name; } |
| 생성자 프로모션 | function __construct(public string $name) {} |
| 인스턴스 생성 | $u = new User("Ada"); |
| 멤버 접근 | $u->name, $u->save() |
| 정적 멤버 | User::$count, User::create() |
| 상속 | class Admin extends User { ... } |
| 인터페이스 | interface Saveable { public function save(); } |
| 인터페이스 구현 | class User implements Saveable { ... } |
가장 자주 쓰는 PHP 문법을 한 페이지에 담았습니다. 이 PHP 치트시트는 언어 핵심을 위한 빠른 참조 자료입니다 - 변수와 타입, 문자열, 배열(연관 배열 포함), 제어 흐름, 함수, $_GET과 $_POST 같은 슈퍼글로벌, 그리고 클래스를 다룹니다.
여기 나오는 모든 내용은 최신 버전에서 동작하는 표준 PHP입니다. 필요한 것을 복사하거나, PHP 플레이그라운드에서 모든 코드를 바로 실행해 보세요 - 서버를 설정할 필요가 없습니다.
PHP 치트시트 자주 묻는 질문
이 PHP 치트시트는 무료인가요?
네. 이 PHP 치트시트는 완전히 무료이며 회원 가입이 필요 없습니다. 즐겨찾기에 추가해 두고 문자열 함수, 배열 도우미, 슈퍼글로벌을 찾아봐야 할 때마다 다시 방문하세요.
PHP에서 ==와 ===의 차이는 무엇인가요?
==는 느슨한 비교입니다: 비교 전에 피연산자를 공통 타입으로 변환하므로 0 == "0", 심지어 0 == ""도 버전에 따라 의외로 동작할 수 있습니다. ===는 엄격한 비교입니다: 값이 같고 타입도 같을 때만 true를 반환하므로 0 === "0"은 false입니다. 타입 변환 버그를 피하려면 ===를 선호하세요.PHP에서 연관 배열이란 무엇인가요?
연관 배열은
["name" => "Ada", "age" => 30]처럼 숫자 인덱스 대신(또는 함께) 이름 있는 문자열 키를 사용하는 PHP 배열입니다. PHP에는 순서 있는 리스트와 키-값 맵 역할을 모두 하는 단일 배열 타입이 있어, $user["name"]으로 키로 값에 접근하고 foreach ($user as $key => $value)로 순회합니다.PHP를 온라인에서 연습할 수 있나요?
네. PHP 플레이그라운드를 열어 이 치트시트의 어떤 코드든 브라우저에서 실행해 보세요 - 서버나 로컬 PHP 설치가 필요 없습니다. 체계적으로 배우고 싶다면, Coddy의 무료 인터랙티브 PHP 강좌가 변수와 배열부터 함수와 객체 지향까지 단계별로 안내합니다.
이 치트시트는 초보자에게 적합한가요?
네. 가장 흔한 주제(변수, 문자열, 배열, 제어 흐름)부터 고급 주제(슈퍼글로벌과 객체 지향)까지 순서대로 정리되어 있어, 첫날부터 상단 섹션을 사용하고 점차 나머지로 넓혀갈 수 있습니다.