본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP 변수 · 연산자 · 연관배열 · explode 완전 정리

by 왕진 2026. 6. 11.
반응형

 

 

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가 자동으로 값으로 치환된다. 작은따옴표 ''에서는 글자 그대로 출력된다.
출력 결과
localhost/calc.php
5 + 1 = 6
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>"; ?>
📌 좌측 배열 우선 규칙 — 같은 키가 있으면 왼쪽 배열의 값이 살아남는다. $data1name="○철수"가 그대로 유지되고, $data2name="○영희"는 무시. tall$data1에 없으니 $data2에서 추가됨.
var_dump 결과
localhost/array.php
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, 티스토리
반응형

댓글