반응형
Web Development · PHP
PHP 변수 · 연산자 · 연관배열
explode 함수까지 한 번에
$로 시작하는 변수, 산술/복합/삼항/비트 연산자, key=>value 배열
시작 PHP의 데이터 다루기
PHP의 모든 변수는 $로 시작한다. 이번에는 변수에 데이터를 담고, 산술·복합·삼항·비트 연산자를 적용하고, 여러 데이터를 연관배열(key⇒value)로 묶고, 문자열을 explode()로 잘라 배열로 만드는 방법까지 정리한다.
용어 핵심 키워드
$변수PHP 변수는 $로 시작
+ - * / %산술 연산자
+= -= *= /=복합 대입 연산자
.문자열 연결 연산자
.=문자열 누적 연결
++ --증감 연산자
? :삼항 연산자 (조건 ? 참 : 거짓)
& | ^ ~비트 연산자
@오류 제어 연산자
array()배열 생성 함수
key => value연관배열 항목
+ (배열)합집합 — 좌측 우선
explode()문자열을 구분자로 쪼개서 배열로
var_dump()변수의 타입과 값을 자세히 출력
1 산술 연산자 — + − × ÷ %
<?php $answer = 5 + 1; print "5 + 1 = $answer"; print "<br>"; $answer = 5 - 2; print "5 - 2 = $answer"; print "<br>"; $answer = 5 * 3; print "5 * 3 = $answer"; print "<br>"; $answer = 5 / 5; print "5 / 5 = $answer"; print "<br>"; $answer = 5 % 3; print "5 % 3 = $answer"; // 나머지 = 2 ?>
💡 "$answer" 안의 변수 보간 — 큰따옴표
"" 안에서는 $answer가 자동으로 값으로 치환된다. 작은따옴표 ''에서는 글자 그대로 출력된다.출력 결과
5 + 1 = 6
5 - 2 = 3
5 * 3 = 15
5 / 5 = 1
5 % 3 = 2
5 - 2 = 3
5 * 3 = 15
5 / 5 = 1
5 % 3 = 2
2 복합 대입 연산자 — += −= 등
<?php $data = 20; $age = $data; // $age = 20 $age += 5; // $age = $age + 5 → 25 print $age; // 25 ?>
| 연산자 | 의미 | 예시 | 풀이 |
|---|---|---|---|
$a += $b |
덧셈 후 대입 | $a += 5 |
$a = $a + 5 |
$a -= $b |
뺄셈 후 대입 | $a -= 3 |
$a = $a - 3 |
$a *= $b |
곱셈 후 대입 | $a *= 2 |
$a = $a * 2 |
$a /= $b |
나눗셈 후 대입 | $a /= 4 |
$a = $a / 4 |
$a %= $b |
나머지 후 대입 | $a %= 3 |
$a = $a % 3 |
3 문자열 연결 — . 과 .=
<?php $data = '○철수'; $name = $data; $name .= "○영희"; // $name 끝에 "○영희" 추가 print $name; // "○철수○영희" ?>
⚠ JavaScript의 +와 다르다 — JS는 문자열도
+로 연결하지만, PHP는 +가 항상 산술 덧셈이다. 문자열 연결은 반드시 .(점).4 증감 연산자 — 후위 vs 전위
<?php $count = 0; print $count++; // 0 출력 → 그 다음 1로 증가 (후위) print "<br>"; print $count; // 1 출력 $count = 3; print $count--; // 3 출력 → 그 다음 2로 감소 (후위) print "<br>"; print $count; // 2 출력 ?>
단계코드출력$count 값
초기$count = 0;0
1print $count++;01
2print $count;11
$count++ (후위)
- 현재 값을 먼저 사용
- 그 다음 1 증가
print $count++;→ 0 출력
++$count (전위)
- 먼저 1 증가
- 그 후의 값을 사용
print ++$count;→ 1 출력
5 삼항 연산자 — 한 줄 if
<?php $age = 19; $adult_age = 20; $adult_check = ($adult_age <= $age) ? "어른" : "아이"; // ↑ ↑ ↑ // 조건 참일때 거짓일때 print $adult_check." 입니다."; // "아이 입니다." ?>
삼항 연산자는 조건 ? A : B 형태. 조건이 참이면 A, 거짓이면 B 반환. if-else를 한 줄로 쓰는 단축형이다.
💡 PHP 7+ 의 단축 삼항(??) —
$name ?? '익명'은 "$name이 null이면 '익명'"이라는 뜻. 변수 존재 여부 체크에 자주 쓴다.반응형
6 비트 연산자 — & (AND)
<?php $data = 0 & 0; print $data."<br>"; // 0 $data = 1 & 0; print $data."<br>"; // 0 $data = 0 & 1; print $data."<br>"; // 0 $data = 1 & 1; print $data."<br>"; // 1 ?>
| 비트 연산자 | 의미 | 예시 결과 |
|---|---|---|
& AND |
둘 다 1이면 1 | 1 & 1 = 1 |
| OR |
둘 중 하나만 1이면 1 | 1 | 0 = 1 |
^ XOR |
둘이 다르면 1 | 1 ^ 1 = 0 |
~ NOT |
비트 반전 | ~5 = -6 |
<< |
왼쪽 시프트 | 2 << 1 = 4 |
>> |
오른쪽 시프트 | 4 >> 1 = 2 |
7 true / false 출력
<?php print true; // 1 출력 print false; // 빈 문자열 (아무것도 출력 안 됨) print (5 == 5); // 1 (true) print (5 == 4); // 빈 문자열 (false) ?>
⚠ PHP의 false는 출력 시 빈 문자열 —
print false해도 화면엔 아무것도 안 보인다. 명시적으로 보고 싶으면 var_dump(false)를 사용 → bool(false)로 표시.8 오류 제어 연산자 — @
<?php $string = @$data[$key]; // $data가 정의되지 않아도 에러 무시 print "오류제어 연산자 테스트"; ?>
변수 앞에 @를 붙이면 그 표현식의 에러를 무시한다. 정의되지 않은 변수에 접근하거나 파일이 없는 경우의 경고를 숨긴다.
⚠ 남용 금지 —
@는 디버깅을 어렵게 만든다. 진짜 에러까지 숨겨버린다. 더 나은 방법은 isset() 또는 ??(null 병합).// 권장 패턴 $string = $data[$key] ?? ''; // PHP 7+ — 깔끔한 폴백 $string = isset($data[$key]) ? $data[$key] : '';
9 연관배열 — key => value
방법 1 — 한 칸씩 채우기
<?php $member["name"] = "○철수"; // name(키) → 철수(값) $member["age"] = 20; $member["tall"] = 170; print $member["name"]; // "○철수" print $member["age"]; // 20 ?>
방법 2 — array() 한 번에
<?php $member = array( "name" => "○철수", "age" => 20, "tall" => 170 ); // PHP 5.4+ 단축 문법 $member = [ "name" => "○철수", "age" => 20, "tall" => 170 ]; ?>
$member 의 구조
"name"⇒"○철수"
"age"⇒20
"tall"⇒170
10 배열 + 연산자 — 좌측 우선 합집합
<?php $data1 = array("name" => "○철수", "age" => 20); $data2 = array("name" => "○영희", "tall" => 180, "age" => 30); $data = $data1 + $data2; print "<pre>"; var_dump($data); print "</pre>"; ?>
📌 좌측 배열 우선 규칙 — 같은 키가 있으면 왼쪽 배열의 값이 살아남는다.
$data1의 name="○철수"가 그대로 유지되고, $data2의 name="○영희"는 무시. tall은 $data1에 없으니 $data2에서 추가됨.var_dump 결과
array(3) {
["name"]=>
string(8) "○철수" ← $data1 우선
["age"]=>
int(20) ← $data1 우선
["tall"]=>
int(180) ← $data2에서 추가
}
11 explode() — 문자열을 배열로
<?php $week = explode(",", "월,화,수,목,금,토,일"); // ↑ 구분자 ↑ 자를 문자열 print $week[3]; // "목" (인덱스 0부터 시작) ?>
"월,화,수,목,금,토,일"
→
explode(",", ...)
→
월 화 수 목 금 토 일
explode()는 구분자(첫 번째 인자)를 기준으로 문자열(두 번째 인자)을 잘라 배열로 반환한다. 반대 작업은 implode(",", $arr).
※ 자주 쓰는 분리 패턴
explode("@", "user@example.com")→ 이메일을 ID와 도메인으로explode("/", "2024/05/01")→ 날짜를 년/월/일로explode(" ", "hello world")→ 단어 분리 (공백 기준)
12 자주 하는 실수
| 증상 | 원인 | 해결 |
|---|---|---|
| 변수 이름 그대로 출력됨 | 작은따옴표 사용 | 큰따옴표로 — "$name" |
| "hello"+" world"가 0 | +는 산술 연산자 | 문자열 연결은 . 사용 |
| $count++가 print 안에서 0 나옴 | 후위 증가 — 사용 후 증가 | ++$count로 전위 사용 |
| print false 안 보임 | false는 빈 문자열로 변환 | var_dump() 사용 |
| 배열 + 했더니 일부 키 사라짐 | 좌측 우선 — 충돌하면 우측 무시 | array_merge() 사용 (우측 우선) |
| explode 결과에 빈 항목 | "a,,b"처럼 연속 구분자 | array_filter()로 빈 값 제거 |
13 핵심 한 줄 요약
PHP — VARIABLES & OPERATORS & ARRAY
변수$로 시작 — $name
산술+ - * / %
복합 대입+= -= *= /= %= .=
문자열 연결. (점) — JS의 + 아님
증감$x++ (후위) / ++$x (전위)
삼항조건 ? 참 : 거짓
변수 보간"$name" — 큰따옴표 안에서만
연관배열$arr["key"] = value 또는 array(key=>value)
배열 합집합$a + $b — 좌측 우선 (충돌시 a 유지)
문자열 분리explode(구분자, 문자열) → 배열
값 자세히 보기var_dump($var)
Tags
#PHP #변수 #연산자 #산술연산 #복합대입 #문자열연결 #삼항연산자 #증감연산자 #비트연산 #연관배열 #explode #varDump #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, 변수, 연산자, 산술연산, 복합대입, 문자열연결, 삼항연산자, 증감연산자, 비트연산, 연관배열, explode, varDump, 티스토리
반응형
'php' 카테고리의 다른 글
| PHP foreach · function · break · continue · require 완전 정리 (0) | 2026.06.11 |
|---|---|
| PHP 제어문 — if · switch · for · while · foreach 완전 정리 (0) | 2026.06.11 |
| PHP 시작 — print · echo · HTML 임베딩 완전 정리 (1) | 2026.06.11 |
| XML 구조 + BookApp CRUD UI 완전 정리 (0) | 2026.06.11 |
| jQuery Chart 심화 — 막대 · 버블 · 파이 + Native Form 완전 정리 (0) | 2026.06.11 |
왕진 블로그

댓글