syurhia 님의 블로그

PHP문법 간단 요약 본문

IT/PHP

PHP문법 간단 요약

syurhia 2026. 5. 12. 19:30

기본적으로 유저가 웹 사이트에 접속했을 때 보이는 페이지는 HTML과 CSS, JavaScript뿐이다.

서버측(Server-Side)은 PHP와 같은 언어들을 통해서 함수를 만들고, 유저에게 어떠한 내용을 전달할지를 작성할 수 있다.

 

C언어를 배운 사람이 있다면 알겠지만 PHP는 문법이 C언어와 굉장히 유사하다.


PHP문법 사용 방법

 

HTML을 보면 항상 구역을 나누어준다.

<html></html>같이 말이다.

그리고, html에 들어갈 내용들은 저 태그 사이에다 작성해준다.

 

PHP도 마찬가지이다. PHP문법을 사용하기 위해서는 다음과 같은 구역으로 나눠주어야 한다.

<?php?>

작성을 하는 방법에 대해서는 php의 다음부분에 내용을 작성해주면 된다.

 

아래의 코드가 PHP를 사용하는 방법의 예시다.

<?php
	ECHO "출력합니다";
?>

 

"출력합니다"라는 문장을 출력해주는 것이다.


ECHO 출력문

 

ECHO는 C언어의 printf와 같은 문장을 출력해주기 위한 함수 비스무리한 것이다. 엄격하게 따지자면 함수가 아니고 기본 문법이긴 하지만 그것까진 신경쓰지 말도록 하자.

 

보통 ECHO를 쓰고 큰 따옴표 또는 작은 따옴표에 적힌 내용을 출력해준다. 출력을 해주는 대상은 상황에 따라 다르다. 웹 브라우저(HTML문에다가 추가해주는 방식으로)에다가 출력을 할 수도 있고, 터미널창에서 실행하면 터미널에 출력해준다. 

 

예시를 들자면 아래와 같다. 아래의 예시는 출력 예시1이라는 문장과 출력 예시2라는 문장을 출력해준다. 

<?php
	ECHO "출력 예시1";
    ECHO '출력 예시2';
?>

 

다만, 작은 따옴표의 경우에는 특수기호를 인식 못하고 그대로 출력해주는데 반해, 큰 따옴표의 경우에는 특수기호 처리를 해준다.

 

예시가 아래와 같다. 아래 예시의 출력은 안녕1이 출력된 이후 개행(줄 바꿈)을 해준다. 그 이후에 출력되는 문장은 안녕2\n이다.

<?php
	ECHO "안녕1\n";
    ECHO '안녕2\n';
?>

 

ECHO로 문장을 여러 개 출력하고 싶을 때는 ,(쉼표)나 .(마침표)를 쓰면 된다.

쉼표는 여러 개의 데이터를 ECHO를 통해 이어서 출력한다.

마침표는 여러 개의 데이터를 하나로 통합시켜서 출력한다.

 

아래가 예시이다. 안녕12를 출력하고, 안녕34를 출력한다.

<?php
	ECHO "안녕","1","2";
	ECHO "안녕"."3","4";
?>

 

만약 ECHO만 쓰고 싶은데 매번 <?php ECHO ...?>를 쓰는 것은 번거롭지 않은가? 

그럴때를 위한 축약 문법이 존재한다.

 

<?="..."?>이다.

<?=?>가 <?php ECHO ?>를 대신한 것과 같다.

 

아래가 예시다. Hi Hello를 Echo로 출력한 것과 같다.

<?="Hi Hello"?>

  

그리고 중요한 점으로는 ECHO는 띄어쓰기를 아무리 눌러도 한 번밖에 입력이 안 된다. &nbsp;를 입력해줘야 여러 칸을 강제로 띄우는 게 가능하다.

 

아래가 예시다. Hi와 Hello 사이에 띄어쓰기가 3개가 들어섰다. Hi   Hello 이런 느낌이다.

<?="Hi",&nbsp;&nbsp;&nbsp;,"Hello"?>

 


변수

 

변수의 선언이 기본적으로 필요없다.

파이썬과 같이 필요할 때 쓰면 그게 선언이면서 동시에 활용하는 셈이다.

$를 붙이면 된다.

참고로 모든 코드의 끝마침은 세미콜론을 사용한다.

 

아래가 예시다.

<?php
	$Example = 1;
    $Example2 = "Hello";
?>

 

변수의 종류는 다양한데 지역변수나 전역변수 등에 대한 설명은 안 하겠다.

 

대신에 슈퍼 전역 변수에 대한 설명을 간략히 해보고자 한다.

슈퍼 전역 변수는 스코프(범위)를 무시한다. 간단히 생각하면 어디에서나 선언없이 자유롭게 쓸 수 있는 전역변수쯤으로 생각하자.

 

$_REQUEST, $_GET, $_POST, $_SESSION, $_SERVER 등이 존재한다.

이 친구들이 있어서 다양한 작업이 가능하다. (전부 연관배열)

 

REQUEST의 경우에는 외부에서 온 값들을 전부 저장한 배열이다.

 

아래가 예시이다. $name이라는 변수에 외부에서 전해받은 값 name을 저장한 것이다. 이렇게 $_REQUEST를 아무런 정의없이 그냥 사용해도 된다. 값들은 연관배열로 저장된다. 연관배열은 파이썬의 dictionary 타입을 생각하면 된다.

<?php
	$name = $_REQUEST["name"];
?>

유저가 전달한 값을 받는 방법 GET, POST

 

 

 

GET과 POST가 무엇인지는 아래의 링크에서 확인하길 바란다.

https://syurhia.tistory.com/31

 

GET과 POST를 통해서 유저는 값을 서버측에 전달한다. 

GET의 경우에는 $_GET을 통해 유저가 전해준 값을 조회할 수 있다.

POST의 경우에는 $_POST를 통해 유저가 전해준 값을 조회할 수 있다.

 

그리고 모든 값은 $_REQUEST에도 저장되기 때문에 $_GET에 있는 값도, $_POST에 있는 값도 $_REQUEST를 통해 확인할 수 있다.

 

아래가 예시이다. name과 age값을 유저에게 받아서 $name과 $age에 저장한다.

<?php
	$name = $_REQUEST["name"];
    $age = $_GET["age"];
?>

 

유저가 값을 보내기 위한 코드 예시는 아래와 같다. 이런 방식을 통해 서버가 값을 받는다고 보면 된다.

name과 age를 송신 버튼을 누르면 GET방식으로 보내는데 ??.php로 이동된다.

<!doctype html>
<html>
<head><meta charset='utf-8'></head>
<body>
	<form action="??.php" method="GET">
		<input type="text" name="name" value="이름">
	    <input type="text" name="age" value="나이">
        <input type="submit" value"송신">
    </form>
</body>
</html>

if else문

if문은 조건 분기를 위한 문법이다.

if (조건식){} 과 같은 방식으로 사용하며, 조건식을 만족할 경우 괄호{} 내부의 코드를 실행한다.

if를 만족하지 않으면 else 또는 else if로 이동한다.

else if는 if가 아닐 때, 다른 분기를 넣고 싶을 때 사용한다.

 

<!doctype html>
...
<?php
if($a==0){
echo "$a는 0<br>";
}
else if($a %2 ==0){
echo "$a는 짝수<br>";
}

else{
echo "$a는 홀수<br>";
}
?>

...
</html>

 

switch case문

if문을 많이 써야 되는 상황일 때 쓸 수 있는 것. 모든 상황에서 사용 가능한 건 아니다.

case 값1의 코드가 다 실행되고 나서 break;를 안 해주면 이어서 case 값2의 코드도 실행하게 되니 break를 꼭 붙여주자. 

switch(변수){
case 값1: 변수 1일 때 실행할 코드;
break;
case 값2: 변수 2일 때 실행할 코드;
break;
default: 변수값이 위에 해당하는 게 없을 때 실행할 코드;
}

 

아래가 예시다.

$op = "*";

switch(op){
case +: echo "플러스";
break;
case *: echo "곱셈";
break;
default: echo "예외";
}

 

삼항 연산자

 

if를 짧게 쓸 수 있는 방법이다.

 

아래와 같이 사용한다.

조건식 ? 참일때 리턴값: 거짓일때 리턴값

 

예시다.

$str = ($a %2 ==0) ? "짝수" : "홀수";

while문

반복문이다. 조건식을 만족하면 내부의 코드를 실행한다. 코드를 실행한 뒤, 또 조건식을 확인한다.

이걸 조건식이 참이 아닐때까지 반복한다.

while(조건식){
실행코드;
}

 

예시이다.

$i=0;

while($i<=5){
$i++;
}

 

for문

반복문이다. 조건문과 첫 시작의 식, 반복식을 작성할 수 있다.

 

아래가 예시이다.

for($i=0;$i<5;$i++){
echo $i;
}

 

foreach문

배열에 있는 값을 빼내주는 반복문이다. 파이썬의 for문과 비슷한 느낌이다.

php에서는 딕셔너리 형태의 배열을 많이 쓰기 때문에 foreach문이 쓰인다.

 

아래가 사용 방법이다.

foreach(배열 as 인덱스 문자열 담을 변수 => 한칸의 값 담을 변수){
코드;
}

// 아래와 같이 생략도 가능
// 인덱스 값 필요 없을 때에.
foreach(배열 as 한 칸 값 담을 변수){
코드;
}

 

만약 배열 Array에 이러한 값이 들어있다고 치자. 

$array = [
"name" => "syurhia",
"age" => "3",
"addr" => "Korea"
];

이 경우에 foreach를 쓰면 array["name"] = "syurhia"를 하나씩 for문처럼 뽑을 수 있는 것이다.

for문으로는 인덱스의 숫자밖에 지시할 수 없으니 굉장히 편하다.

 

do while문

한 번은 무조건 실행시켜주는 반복문이다. while과 같은데 do로 인해서 무조건 한 번은 실행된다.

do{
코드;
}while(조건식);

배열

 

PHP에서는 배열에서 인덱스를 기존의 C언어와 같은 숫자로 입력할 수 있고, 파이썬의 dict타입같이 연관배열인 문자로 인덱스를 입력할 수 있다.

 

아래가 예시이다. 참고로 아래와 같이 입력하면 인덱스에 id,phone, 0, 1이 공존한다. 

$user["id"] = "Syu";
$user["phone"] = "111-1111";

$user[0] = "ABC";
$user[1] = "Kor";

 

다차원 배열도 입력이 가능하다. 아래가 예시이다. 이렇게 입력하면 0번째 인덱스에 ["Syu", "Kor", "111-1111"]이 들어가 있는 2차원 배열이 되는 것이다.

$test = [
["Syu","Kor","111-1111"],
["Rhia","America","123-4444"]
];

함수 (지역변수 전역변수)

 

함수 사용법이다. 리턴값의 형태를 함수 선언 시 써줄 필요가 없는게 인상적이다.

function 함수명(매개변수들){
코드;
}

 

사용 예시이다.

function test($abc){
    echo "$a<br>"
    $b = 1;
    return $b;
}

 

전역변수를 사용할때 그냥 사용하는게 아니라 $_GLOBALS를 사용해줘야 한다.

아래가 예시이다.

$a = 1;
function test(){
echo $a; //에러남

echo $GLOBALS["a"]; //에러 없음. 전역변수는 이렇게 불러와야 함.
}

객체 (클래스)

 

클래스를 정의하는 방법이다.

 

아래가 사용 방법이다. __construct가 생성자이다. 클래스 생성시 자동 호출되는 함수.

private은 클래스 내부에서만 변경 가능하다. 

클래스 상수는 const로 선언하고, 사용시는 클래스명::상수명 을 사용한다.

class 클래스명{
	private $ab;
    public $cd;
    const TEST = '1111'; // 클래스 상수
    
    public function __construct($ab){
    	$this->ab = $ab; // 전역변수는 $GLOBALS[]
    }
    
    public function 함수명(){
    	$this->ab = 값;
        코드;
    }

	private function 함수명(){
    	코드;
    }
}


사용 방법

$p1 = new 클래스명(4);
$p1->cd = 클래스명::TEST; //클래스 상수 사용 방법

 

클래스는 딱히 예시를 안 써도 될 것 같다.


이걸로 굵직한 문법들은 전부 끝마쳤다.

혹시 모르는 내장함수가 등장한다면 인터넷 검색을 권장한다.

'IT > PHP' 카테고리의 다른 글

MySQL(MariaDB)문법 요약 및 PHP연동  (0) 2026.05.12
GET과 POST의 이해  (0) 2026.05.07
PHP환경 구축  (0) 2026.04.28