변수의 선언 방법과 규칙
PHP에서 변수를 설정하려면, 변수로 사용할 식별자, 즉 변수명을 정하고 $
(달러 기호)를 변수 이름 앞에 붙입니다. 그 다음 오른쪽에 할당 연산자로 불리우는 =
과 할당할 데이터(값)를 작성하면 됩니다.
이렇게 변수를 설정하는 것을 "변수를 선언한다" 또는 "변수를 정의한다", "변수를 할당한다"라고 말합니다.
변수 선언 구문
$변수명 = 데이터(값);
코드 부연설명
=
앞뒤의 공백은 시각적으로 편리하게 구별하기 위해 사용한것으로, 공백이 있거나 없거나 아무런 상관이 없습니다.
기본 예제
$var = 'Hello World!';
echo $var; // 출력: 'Hello World!'
변수명 규칙
PHP에서 변수명을 정할 때는 몇 가지 규칙을 지켜야 합니다.
- 고유한 식별자 사용(대소문자를 구분)
- 알파벳, 숫자, 언더스코어(
_
)만 사용 가능 - 숫자로 시작할 수 없음
- 예약어는 사용할 수 없음
고유 식별자 사용
PHP에서 변수명은 해당 변수를 사용할 때 다른 변수나 식별자와 구별되는 고유한 식별자를 사용해야 합니다. 같은 스코프 내에서 같은 이름을 가진 변수가 존재하면 덮어쓰기가 발생하므로, 변수명을 고유하게 지정해야 합니다.
PHP의 변수는 대소문자를 구분합니다.
$var
와 $Var
는 서로 다른 변수로 취급됩니다. 변수명을 정할 때 대소문자를 고려하여 고유성을 유지하는 것이 중요합니다.
예제
// 같은 스코프 내에서 변수명이 중복되면 덮어쓰기 발생
$var = 90;
$var = 100;
// 대소문자를 구분
$Var = '대문자 V가 있는 변수';
echo $var; // 출력: 100
echo $Var; // 출력: '대문자 V가 있는 변수'
- 첫 번째 변수
$var
는 두 번째 줄에서100
으로 덮어쓰여 이전 값 90은 사라집니다. $Var
는 대문자 V가 포함되어$var
와 완전히 다른 변수로 취급됩니다.- 따라서 변수명을 고유하게 짓고 대소문자를 주의하면 의도치 않은 덮어쓰기를 방지할 수 있습니다.
알바벳, 숫자, 언더스코어(_
)만 사용 가능
PHP 변수명은 알파벳, 숫자, 언더스코어(_
)만 사용할 수 있습니다.
특수 문자나 공백은 변수명에 포함될 수 없습니다.
예제
$name = '홍길동'; // 올바른 변수명
$user_1 = 25; // 올바른 변수명
$age = 30; // 올바른 변수명
$my-name = '테스트'; // 잘못된 변수명, '-' 포함
$user name = '테스트'; // 잘못된 변수명, 공백 포함
숫자로 시작할 수 없음
PHP 변수명은 숫자로 시작할 수 없습니다.
변수명이 숫자로 시작하면 문법 오류가 발생하므로 항상 문자나 언더스코어(_
)로 시작해야 합니다.
예제
$age1 = 25; // 올바른 변수명
$_age = 30; // 올바른 변수명
$1stPlace = 1; // 잘못된 변수명, 숫자로 시작
예약어 사용 금지
PHP 변수명으로는 예약어(reserved words)를 사용하는 것을 피해야 합니다.
예약어는 PHP 언어에서 이미 특별한 의미를 가진 단어이므로, 변수명으로 사용하면 코드 가독성이 떨어지고 의도치 않게 덮어쓰거나 혼동을 일으킬 수 있습니다.
예제
/* 잘못 사용하는 경우 */
$class = '테스트';
$function = '함수';
$echo = '출력';
최소 1자 이상
PHP $
(달러 기호) 다음의 변수명은 적어도 하나 이상의 문자를 포함해야 합니다.
$ = 10; // 잘못된 변수명
변수에 데이터(값) 할당
PHP에서 변수 할당이란 변수를 선언할 때 $
(달러 기호)가 포함된 변수명 다음 오른쪽에 할당 연산자로 불리우는 =
으로 이 변수로 사용할 데이터(값)을 지정하는 것을 말합니다.
PHP에서는 변수를 선언함과 동시에 반드시 값을 할당해야 하며, 할당된 값은 나중에 참조하거나 연산 등에 사용할 수 있습니다.
PHP에서는 변수 선언 시 값을 할당하지 않으면 Warning: Undefined variable
경고가 발생합니다.
예제
// 선언과 동시에 값 할당
$var = 10;
echo $var; // 출력: 10
// 데이터 타입별 초기값 지정
$empty_string = '';
$empty_array = [];
$zero = 0;
// 필요할 때 null 할당
$result = null;
if (true) {
$result = '값이 할당됨';
}
echo $result; // 출력: 값이 할당됨
// 값 없이 단독 선언 시(오류 발생)
$no_value;
echo $no_value; // Warning: Undefined variable $function
변수 선언 시 데이터(값) 할당하는 것을 "변수를 초기화 한다"라고 말합니다.
PHP에서는 변수가 선언(정의)되지 않거나 변수에 값이 할당되지 않았음을 나타내는 데이터 타입을 NULL
이라고 하며, 값은 null
이 됩니다. 주의할 점으로는 이렇게 초기화되지 않은 변수나 선언(정의)되지 않은 변수를 사용할 경우 모두 Warning: Undefined variable
가 발생한다는 것입니다. PHP NULL – 개념 정리 및 올바른 이해을 참고하세요.
선언(정의)되지 않은 변수를 배열처럼 사용하기(Autovivification)
PHP에서는 선언(정의)되지 않은 변수를 배열처럼 사용하면, PHP가 자동으로 배열을 생성하고 값을 할당합니다. 이때에는 Warning: Undefined variable
경고가 발생하지 않습니다.
$a[] = 'test'; // $a는 이전에 선언되지 않았지만 자동으로 배열로 초기화됨. 에러가 발생하지 않음
var_dump($a); // 출력: array(1) {[0]=> string(4) "test" }
변수 삭제하기
unset()
을 사용하면 정한 변수의 설정을 해제(삭제)합니다.
/* 하나의 변수 설정을 해제 */
$a = 10; // 변수 설정
var_dump($a); // int(10)
unset($a); // 변수 해제
var_dump($a); // Warning: Undefined variable $a
/* 여러 개의 변수 설정을 해제 */
$x = 1;
$y = 2;
$z = 3;
unset($x, $y); // $x와 $y 해제
var_dump($x); // Warning: Undefined variable $x
var_dump($y); // Warning: Undefined variable $y
var_dump($z); // int(3) - $z는 그대로 존재