PHP 매뉴얼
이전 | 7. 장. 변수 | 다음

# 가변 변수

때때로 가변 변수명을 갖을수 있는것다는 것은 편리함을 준다. 즉, 변수명이 유동적으로 설정되거나 사용될수 있다. 일반적인 변수는 다음과 같은 구문에 의해 설정된다:

`<?php $a = "hello"; ?>`

가변변수는 변수값을 취해서 변수명으로 취급한다. 위 예제코드는, hello를 두개의 달러사인을 사용하여 변수명으로 사용할수 있다.

`<?php $$a = "world"; ?>`

이 지점에서 두 변수가 선언되었고 PHP 심볼 트리에 저장된다: `$a`는 "hello" 값을 갖고 `$hello`는 "world" 값을 갖게 된다. 따라서, 이 구문:

`<?php echo "$a ${$a}"; ?>`

다음과 완전히 똑같이 출력된다:

`<?php echo "$a $hello"; ?>`

즉, 둘다 `hello world`를 출력한다.

배열을 갖는 가변변수를 사용하기 위해서는 애매한 문제를 해결해야 한다. 즉 `$$a[1]`를 쓴다면 해석기는 `$a[1]`가 변수를 의미하는지 알수 있어야 한다. 또는 `$$a`가 변수이기를 바라고, [1]가 그 변수의 인덱스인지 알수 있어야 한다. 이런 애매한 문제를 해결하기 위한 문법: 첫번째 목적을 위해 `${$a[1]}`과 두번째 목적을 위해 `${$a}[1]`을 들수 있다.

주의
가변 변수가 PHP의 슈퍼전역 배열로 사용될수 없음을 주의해야 한다. `${$_GET}`와 같은 변수를 사용할수 없음을 의미한다. 슈퍼전역변수의 유효성과 구버전의 `HTTP_*_VARS`를 제어하는 방법을 원한다면, 그 변수들을 참조하려 할것이다.

이전 | 처음으로 | 다음
변수 유효영역 | 위로 | PHP 외부 출신의 변수들