가변 변수를 유동 변수라 부르기도 합니다. 일반 변수는 다음과 같습니다.
<?php
$a = "hello";
?>
아래 예제는 가변 변수로 두 개의 $가 붙습니다. 이는 변수 값을 취해서 변수명으로 취급한다는 뜻입니다.
<?php
$a = "hello";
$$a = "habony";
?>
$a변수에 hello값을 정의하고, 다시 $hello 변수에 habony값을 정의하여, 다음과 같은 결과를 얻었습니다.
<?php
$a = "hello";
$$a = "habony";
echo $a;
echo $hello;
?>
다음도 좋은 결과물입니다.
<?php
$Bar = "a";
$Foo = "Bar";
$World = "Foo";
$Hello = "World";
$a = "Hello";
echo $a."\n";
echo $$a."\n";
echo $$$a."\n";
echo $$$$a."\n";
echo $$$$$a."\n";
echo $$$$$$a."\n";
echo $$$$$$$a."\n";
?>
배열을 가변 변수로 사용할 수도 있습니다.
<?php
$number = array("one", "two", "three") ;
$a = "number" ;
${$a}[] = "four" ;
print_r($number) ;
?>
다음은 클레스명 가변 변수의 예입니다.
<?php
class habony {
public function phptest() {
echo 'Hello world!';
}
}
$my_habony = 'habony';
$x = new $my_habony();
$x->phptest();
?>
가변변수는 함수나 클레스 안에서 $this->로 사용되는 특수한 변수를 동적인 변수로 사용될 수 없습니다.