PHP 코드는 어디에 쓰는가
PHP 파일은 보통 .php 확장자를 사용합니다. 파일 안에는 HTML을 그대로 쓸 수 있고, PHP로 처리할 부분만 <?php ... ?> 태그 안에 작성합니다.
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>PHP 문법 연습</title>
</head>
<body>
<h1>안녕하세요</h1>
<?php
echo "PHP가 만든 문장입니다.";
?>
</body>
</html>PHP 태그 안의 코드는 서버에서 먼저 실행됩니다. 그 결과로 만들어진 HTML이 브라우저에 전달됩니다. 브라우저는 PHP 코드를 직접 실행하지 않습니다.
PHP 파일 전체가 PHP 코드라면 닫는 태그 ?>를 생략하는 것이 좋습니다.
<?php
$name = "PHP";
echo $name;닫는 태그 뒤에 실수로 공백이나 줄바꿈이 들어가면 나중에 쿠키, 세션, 헤더 처리에서 문제가 생길 수 있습니다. 그래서 순수 PHP 파일에서는 닫는 태그를 생략하는 습관을 들이는 편이 안전합니다.
AI 생성 이미지
문장의 끝에는 세미콜론을 붙인다
PHP에서 하나의 실행 문장은 보통 세미콜론 ;으로 끝납니다.
<?php
$message = "문장 끝에는 세미콜론";
echo $message;세미콜론은 "이 문장은 여기서 끝났다"는 표시입니다. 빠뜨리면 PHP는 다음 줄까지 한 문장으로 해석하려고 하다가 오류를 냅니다.
<?php
$name = "지민"
echo $name;위 코드는 $name = "지민" 뒤에 세미콜론이 없어서 오류가 납니다. PHP 오류 메시지는 처음에는 낯설지만, 대부분 "어느 파일의 몇 번째 줄 근처에서 문제가 났는지"를 알려 줍니다. 오류가 나면 먼저 해당 줄과 그 바로 위 줄을 함께 확인하세요.
주석은 코드에 설명을 남기는 방법이다
주석은 PHP가 실행하지 않는 설명입니다. 지금 코드를 왜 작성했는지, 조심할 점이 무엇인지 남길 때 사용합니다.
<?php
// 한 줄 주석입니다.
$name = "민수";
# 이것도 한 줄 주석이지만, 보통 //를 더 많이 사용합니다.
$age = 20;
/*
여러 줄 주석입니다.
긴 설명이나 임시 메모를 남길 때 사용할 수 있습니다.
*/
echo $name;좋은 주석은 코드를 반복해서 설명하지 않습니다.
// 나이를 20으로 저장한다
$age = 20;이 주석은 코드만 봐도 알 수 있으므로 큰 도움이 되지 않습니다. 대신 의도나 이유를 적는 편이 좋습니다.
// 미성년자 여부를 확인하는 예제에서 사용할 기본 나이
$age = 20;변수는 값을 담는 이름표다
변수는 값을 담아 두는 이름입니다. PHP 변수는 반드시 $ 기호로 시작합니다.
<?php
$name = "수진";
$age = 28;보통은 변수 이름 = 값; 형태로 읽으면 됩니다. 여기서 =는 수학의 "같다"가 아니라 "오른쪽 값을 왼쪽 변수에 넣는다"는 뜻입니다.
<?php
$price = 10000;
$price = 12000;
echo $price; // 12000변수에는 새로운 값을 다시 넣을 수 있습니다. 마지막에 저장된 값이 현재 값입니다.
변수 이름을 지을 때는 다음 규칙을 지키는 것이 좋습니다.
$name,$userName,$totalPrice처럼 의미가 드러나게 짓습니다.숫자로 시작할 수 없습니다.
$1name은 잘못된 이름입니다.대소문자를 구분합니다.
$name과$Name은 서로 다른 변수입니다.한글 변수명도 가능하지만, 실무에서는 영어 이름을 사용하는 편이 일반적입니다.
<?php
$userName = "하늘";
$totalPrice = 30000;
$isLoggedIn = true;$isLoggedIn처럼 참과 거짓을 담는 변수는 is, has, can 같은 말로 시작하면 의미가 분명해집니다.
PHP는 동적 타입 언어다
PHP에서는 변수를 만들 때 자료형을 미리 적지 않습니다. 자료형은 값에 따라 결정됩니다.
<?php
$value = "안녕하세요"; // 문자열
$value = 100; // 정수
$value = true; // 불리언이런 방식을 동적 타입이라고 합니다. 동적 타입은 처음 배울 때 편합니다. 하지만 편한 만큼 주의도 필요합니다. 같은 변수에 문자열, 숫자, 참·거짓이 계속 섞이면 코드를 읽기 어려워집니다.
특히 문자열과 숫자의 자동 변환을 조심해야 합니다.
<?php
$price = "1000";
$shipping = 300;
echo $price + $shipping; // 1300"1000"은 문자열이지만 숫자처럼 생겼기 때문에 PHP가 계산 과정에서 숫자로 바꿔 처리합니다. 작은 예제에서는 편해 보이지만, 실제 서비스에서는 실수의 원인이 됩니다.
<?php
$price = "1000원";
$shipping = 300;
// 이런 계산에 의존하지 않는 것이 좋습니다.
echo $price + $shipping;"1000원"처럼 숫자가 아닌 문자가 섞이면 PHP 버전과 상황에 따라 경고나 오류가 발생할 수 있습니다. 사용자가 입력한 값은 항상 문자열로 들어온다고 생각하고, 숫자로 쓸 값은 검증한 뒤 명확히 변환해야 합니다.
<?php
$input = "1000";
$price = (int) $input;
echo $price + 300; // 1300(int)는 값을 정수로 바꾸는 형 변환입니다. 나중에 폼 처리를 배울 때 이 원칙이 중요해집니다.
기본 자료형 살펴보기
PHP에는 여러 자료형이 있습니다. 이 장에서는 가장 자주 만나는 다섯 가지를 먼저 익힙니다.
정수와 실수
정수는 소수점이 없는 숫자입니다.
<?php
$count = 10;
$page = 3;실수는 소수점이 있는 숫자입니다.
<?php
$rate = 4.5;
$discount = 0.15;금액 계산을 할 때 실수를 무심코 사용하면 오차가 생길 수 있습니다. 예를 들어 10,000원을 15% 할인하는 계산은 가능하지만, 결제 금액처럼 정확해야 하는 값은 정수 원 단위로 다루는 편이 안전합니다.
<?php
$price = 10000;
$discountRate = 0.15;
$discountedPrice = $price - ($price * $discountRate);
echo $discountedPrice;문자열
문자열은 글자 데이터입니다. 작은따옴표나 큰따옴표로 감쌉니다.
<?php
$name = '민지';
$message = "안녕하세요";큰따옴표 안에서는 변수가 값으로 바뀝니다.
<?php
$name = "민지";
echo "안녕하세요, $name 님"; // 안녕하세요, 민지 님작은따옴표 안에서는 변수명이 그대로 출력됩니다.
<?php
$name = "민지";
echo '안녕하세요, $name 님'; // 안녕하세요, $name 님문자열을 이어 붙일 때는 점 . 연산자를 사용합니다.
<?php
$firstName = "김";
$lastName = "민수";
$fullName = $firstName . $lastName;
echo $fullName; // 김민수불리언
불리언은 참 또는 거짓을 나타내는 값입니다.
<?php
$isAdult = true;
$isLoggedIn = false;조건문에서 특히 많이 사용됩니다. true는 조건을 만족한다는 뜻이고, false는 만족하지 않는다는 뜻입니다.
<?php
$isLoggedIn = true;
if ($isLoggedIn) {
echo "로그인 상태입니다.";
}조건문은 다음 장에서 자세히 다룹니다. 지금은 불리언이 프로그램의 판단 결과를 담는 값이라는 점만 기억하면 됩니다.
null
null은 값이 없다는 뜻입니다. 0이나 빈 문자열 ""과 다릅니다.
<?php
$nickname = null;0은 숫자 값이 있는 상태이고, ""는 길이가 0인 문자열이 있는 상태입니다. null은 아직 값이 정해지지 않았거나 의도적으로 비워 둔 상태를 표현할 때 사용합니다.
<?php
$name = ""; // 빈 문자열
$age = 0; // 숫자 0
$address = null; // 값 없음연산자는 값을 계산하고 비교한다
연산자는 값으로 어떤 작업을 하라는 기호입니다. 계산할 때도 쓰고, 값을 비교할 때도 쓰고, 여러 조건을 합칠 때도 씁니다.
산술 연산자
<?php
$a = 10;
$b = 3;
echo $a + $b; // 13
echo $a - $b; // 7
echo $a * $b; // 30
echo $a / $b; // 3.333...
echo $a % $b; // 1
echo $a $b; // 1000%는 나머지를 구합니다. 게시글 목록에서 홀수·짝수 줄을 다르게 표시하거나, 특정 개수마다 줄을 바꿀 때 유용합니다. 는 거듭제곱입니다.
계산 결과를 다시 변수에 저장할 수도 있습니다.
<?php
$count = 5;
$count = $count + 1;
echo $count; // 6이 코드는 다음처럼 줄여 쓸 수 있습니다.
<?php
$count += 1;
$count++;처음에는 줄여 쓰는 문법보다 긴 형태를 먼저 이해하세요. $count++는 "현재 값에 1을 더한다"는 뜻입니다.
비교 연산자
비교 연산자는 결과가 true 또는 false입니다.
<?php
var_dump(10 > 3); // bool(true)
var_dump(10 < 3); // bool(false)
var_dump(10 >= 10); // bool(true)
var_dump(10 <= 5); // bool(false)같은지 비교할 때는 특히 주의해야 합니다.
<?php
var_dump("10" == 10); // bool(true)
var_dump("10" === 10); // bool(false)==는 값이 비슷하면 같다고 판단할 수 있습니다. 이 과정에서 PHP가 자료형을 자동으로 바꿉니다. 반면 ===는 값과 자료형이 모두 같아야 true입니다.
실무에서는 특별한 이유가 없다면 ===를 사용하는 습관이 좋습니다.
<?php
$userInput = "10";
$answer = 10;
var_dump((int) $userInput === $answer); // bool(true)입력값을 먼저 원하는 자료형으로 바꾼 뒤 엄격하게 비교하면 코드가 더 예측 가능해집니다.
같지 않음을 비교할 때도 !==를 자주 사용합니다.
<?php
$status = "admin";
var_dump($status !== "guest"); // bool(true)논리 연산자
논리 연산자는 여러 조건을 합칠 때 사용합니다.
<?php
$age = 20;
$hasTicket = true;
var_dump($age >= 18 && $hasTicket === true); // bool(true)&&는 양쪽 조건이 모두 참이어야 참입니다. "성인이고 티켓이 있다"처럼 두 조건을 동시에 만족해야 할 때 사용합니다.
<?php
$isAdmin = false;
$isOwner = true;
var_dump($isAdmin || $isOwner); // bool(true)||는 둘 중 하나만 참이어도 참입니다. "관리자이거나 글 작성자라면 수정 가능" 같은 규칙에 사용할 수 있습니다.
<?php
$isLoggedIn = false;
var_dump(!$isLoggedIn); // bool(true)!는 참과 거짓을 뒤집습니다. $isLoggedIn이 false이므로 !$isLoggedIn은 true입니다.
echo, print, var_dump로 값 확인하기
PHP에서 가장 간단한 출력은 echo입니다.
<?php
echo "안녕하세요";
echo "
";
echo "PHP입니다";print도 문자열을 출력합니다.
<?php
print "출력합니다";처음 배우는 단계에서는 echo를 기본으로 사용하면 충분합니다. print는 값을 하나만 출력하고, 결과값을 반환한다는 차이가 있지만 지금은 깊게 알 필요가 없습니다.
값의 자료형과 내용을 확인할 때는 var_dump()가 유용합니다.
<?php
$name = "지우";
$age = 25;
$isMember = true;
$deletedAt = null;
var_dump($name);
var_dump($age);
var_dump($isMember);
var_dump($deletedAt);브라우저에서 보면 줄바꿈이 보기 어려울 수 있습니다. 이럴 때는 <pre> 태그를 함께 사용하면 좋습니다.
<?php
$value = "100";
echo "<pre>";
var_dump($value);
var_dump((int) $value);
echo "</pre>";var_dump()는 개발 중 확인용입니다. 실제 사용자 화면에 그대로 보여 주면 내부 구조가 노출될 수 있습니다. 배포용 화면에서는 제거해야 합니다.
또 하나 중요한 점이 있습니다. 사용자가 입력한 값을 HTML에 출력할 때는 그대로 echo하지 말고 안전하게 변환해야 합니다.
<?php
$name = "<b>민수</b>";
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8');htmlspecialchars()는 HTML에서 특별한 의미를 가지는 문자를 안전한 형태로 바꿉니다. 지금은 "사용자 입력을 화면에 출력할 때 필요한 안전장치" 정도로 이해하면 됩니다. 보안 장에서 더 자세히 다룹니다.
작은 예제: 상품 가격 계산하기
지금까지 배운 변수, 자료형, 연산자, 출력을 합쳐 간단한 가격 계산 페이지를 만들어 보겠습니다.
<?php
$productName = "무선 마우스";
$price = 25000;
$quantity = 2;
$deliveryFee = 3000;
$isMember = true;
$totalProductPrice = $price * $quantity;
$totalPrice = $totalProductPrice + $deliveryFee;
if ($isMember === true) {
$totalPrice -= 1000;
}
?>
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>가격 계산</title>
</head>
<body>
<h1>주문 확인</h1>
<p>상품명: <?= htmlspecialchars($productName, ENT_QUOTES, 'UTF-8') ?></p>
<p>수량: <?= $quantity ?>개</p>
<p>결제 금액: <?= $totalPrice ?>원</p>
</body>
</html><?= ... ?>는 <?php echo ...; ?>를 짧게 쓴 문법입니다. 화면에 값을 출력할 때 자주 사용합니다. 단, 사용자 입력이나 외부 데이터는 htmlspecialchars()로 감싸서 출력하는 습관을 들이세요.
위 코드에는 아직 배우지 않은 if가 잠깐 등장합니다. 뜻은 단순합니다. $isMember가 true이면 결제 금액에서 1,000원을 뺍니다. 다음 장에서 이런 흐름 제어를 자세히 다룹니다.
실습 과제
syntax-basic.php파일을 만들고$name,$age,$city변수를 선언한 뒤 한 문장으로 출력해 보세요.상품 가격
$price, 수량$quantity, 배송비$deliveryFee를 변수로 만들고 총 결제 금액을 계산해 보세요."5000"과5000을==,===로 비교한 뒤var_dump()결과를 확인해 보세요.$isLoggedIn,$isAdmin변수를 만들고&&,||,!를 각각 사용해 결과를 확인해 보세요.var_dump()출력이 브라우저에서 보기 좋게 나오도록<pre>태그로 감싸 보세요.
자주 발생하는 오류 점검
세미콜론을 빠뜨린 경우
<?php
$message = "hello"
echo $message;오류가 난 줄만 보지 말고 바로 위 줄도 확인하세요. PHP 문법 오류는 실제 원인이 이전 줄에 있는 경우가 많습니다.
변수명 앞에 $를 빠뜨린 경우
<?php
name = "민수";PHP 변수는 항상 $로 시작합니다.
<?php
$name = "민수";대소문자를 다르게 쓴 경우
<?php
$userName = "지연";
echo $username;$userName과 $username은 다른 변수입니다. 변수 이름 규칙을 정하고 일관되게 사용하세요.
비교에 =를 사용한 경우
<?php
$age = 20;
if ($age = 30) {
echo "30살입니다.";
}=는 대입입니다. 비교할 때는 ===를 사용하세요.
<?php
if ($age === 30) {
echo "30살입니다.";
}숫자처럼 보이는 문자열을 그대로 믿은 경우
<?php
$inputPrice = "10000";
$total = $inputPrice + 3000;작동할 수는 있지만 좋은 습관은 아닙니다. 입력값은 검증하고 필요한 자료형으로 바꾼 뒤 사용하세요.
<?php
$inputPrice = "10000";
$price = (int) $inputPrice;
$total = $price + 3000;기본 문법은 단순해 보이지만, 이후의 모든 코드가 이 위에 쌓입니다. 변수에 어떤 값이 들어 있는지, 그 값의 자료형이 무엇인지, 비교 결과가 왜 true 또는 false인지 설명할 수 있어야 합니다. 다음 장에서는 이 값을 이용해 프로그램의 흐름을 바꾸는 조건문과 반복문을 배웁니다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.