syurhia 님의 블로그
PHP문법 간단 요약 본문
기본적으로 유저가 웹 사이트에 접속했을 때 보이는 페이지는 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는 띄어쓰기를 아무리 눌러도 한 번밖에 입력이 안 된다. 를 입력해줘야 여러 칸을 강제로 띄우는 게 가능하다.
아래가 예시다. Hi와 Hello 사이에 띄어쓰기가 3개가 들어섰다. Hi Hello 이런 느낌이다.
<?="Hi", ,"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 |