PHP 변수의 기본 규칙
PHP에서 변수 이름은 반드시 달러($) 기호로 시작합니다. 첫 글자는 영문자(A~Z, 대소문자 모두 가능) 또는 밑줄(_)이어야 하며, 그 뒤에는 영문자, 숫자, 밑줄을 자유롭게 조합할 수 있습니다. 특히 PHP의 변수 이름은 대소문자를 구분하므로 $var와 $VAR은 서로 다른 변수로 취급된다는 점에 유의해야 합니다.
유효한 변수와 유효하지 않은 변수
// 유효한 변수 $var=10; $VAR="Hello"; // $var과는 다른 별개의 변수 $marks_1=67; $_val=0; // 유효하지 않은 변수 var=10; // $ 기호로 시작하지 않음 $4sqr=16; // 숫자로 시작할 수 없음 (첫 글자는 문자 또는 _여야 함) $my name="Hello"; // 변수 이름에 공백 사용 불가 $my$name="Hello"; // 첫 번째 위치 이후에는 $ 문자 사용 불가
참조(&)를 이용한 값 할당
PHP에서는 한 변수의 값을 다른 변수에 참조(reference) 방식으로 할당할 수도 있습니다. 참조로 값을 할당하려면 변수 이름 앞에 앰퍼샌드(&) 기호를 붙이면 됩니다. 이렇게 하면 두 변수가 같은 메모리 공간을 가리키게 되어, 한쪽의 값을 변경하면 변경 사항이 양쪽 변수 모두에 반영됩니다.
예제
<?php $var1="Hello"; $var2=&$var1; echo $var1 . " " . $var2 . "\n"; $var2="Hi there"; echo $var1 . " " . $var2 . "\n"; ?>
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Hello Hello Hi there Hi there
초기화되지 않은 변수의 기본값
초기화되지 않은 변수는 사용되는 문맥(context)에 따라 기본값을 갖습니다. 예를 들어 정수(integer)와 실수(float) 변수는 0, 불리언(boolean) 변수는 FALSE, 문자열(string) 변수는 빈 문자열("")이 됩니다. 다만 최신 버전의 PHP에서는 초기화되지 않은 변수를 사용할 경우 알림(notice)을 발생시키므로 주의가 필요합니다.
다음 예제는 초기화되지 않은 변수를 사용했을 때 나타나는 동작을 보여줍니다.
예제
<?php $var1=10; $var2=$var1+$var2; echo $var1 . " " . $var2 . "\n"; $x="Hello"; unset($x); var_dump($x); // 초기화되지 않은 상태 ?>
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
10 10 NULL PHP Notice: Undefined variable: var2 PHP Notice: Undefined variable: x
누적 연산자에서의 초기화되지 않은 변수
누적 덧셈 연산자에서 초기화되지 않은 변수를 사용하면 해당 변수는 0으로 간주되어 계산이 진행되지만, 동시에 정의되지 않은 변수에 대한 알림이 발생합니다.
예제
<?php $sum=$sum+10; var_dump($sum); ?>
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
int(10) PHP Notice: Undefined variable: sum
빈 값으로부터 기본 객체 생성
초기화되지 않은 변수에 객체 속성을 직접 할당하면, 경고(warning)가 발생하면서 빈 값으로부터 기본 객체(default object)가 자동으로 생성됩니다.
예제
<?php $obj->name="XYZ"; var_dump($obj); ?>
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
object(stdClass)#1 (1) {
["name"]=>
string(3) "XYZ"
}
PHP Warning: Creating default object from empty value