가변 변수 (Variable variables)

가끔 변수의 이름을 변경할 수 있다면 편리하다고 느낄 때가 있다. 이제 변수의 이름을 바꾸어 사용하는 방법을 알아보자. 보통의 변수 선언은 다음과 같다.:

$a = "hello";

가변 변수은 변수의 값을 가질 수도 있고, 또한 이 값을 변수의 이름으로 다룰 수도 있다. 위의 예에서 $$를 사용하면 hello가 변수 이름이 될 수 있다. 예 :

$$a = "world";

이렇게 하면 PHP의 symbol tree에는 "hello"라는 값을 가지는 $a와 "world"라는 값을 가지는 $hello의 두 개의 변수가 생기게 된다. 그러므로 다음과 같은 문장은 :

echo "$a ${$a}";

다음 문장과 똑 같은 출력을 나타내게 된다.:

echo "$a $hello";

i.e. 둘의 출력: hello world.

가변 변수를 배열과 함께 사용하려면, 한가지 모호성 문제를 해결해야 한다. 그것은, 만약 여러분이 $$a[1]이라고 썼으면, $a[1]을 하나의 변수로 볼 것인지, 아니면 $$a를 변수로 보고 그 변수에 [1]의 인덱스를 해 줄 것인가 하는 문제이다. 다음과 같이 하여 모호성을 해결하자. 전자의 경우 ${$a[1]}라고 쓰고, 후자의 경우는 ${$a}[1]라고 쓰면 된다. ( 역자주: 가변 변수를 나타낼 때는 항상 { }로 둘러 싸는 것이 보기 좋고 오류도 없앨 수 있다.)