가변 변수를 유동 변수라 부르기도 합니다. 일반 변수는 다음과 같습니다.

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

아래 예제는 가변 변수로 두 개의 $가 붙습니다. 이는 변수 값을 취해서 변수명으로 취급한다는 뜻입니다.

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

$a변수에 hello값을 정의하고, 다시 $hello 변수에 habony값을 정의하여, 다음과 같은 결과를 얻었습니다.

<?php 
 $a = "hello"; 
 $$a = "habony"; 
 echo $a; // 결과: hello 
 echo $hello; // 결과: habony 
 ?>

다음도 좋은 결과물입니다.

<?php 
 $Bar = "a"; 
 $Foo = "Bar"; 
 $World = "Foo"; 
 $Hello = "World"; 
 $a = "Hello"; 

 echo $a."\n"; // 결과: Hello 
 echo $$a."\n"; // 결과: World 
 echo $$$a."\n"; // 결과: Foo 
 echo $$$$a."\n"; // 결과: Bar 
 echo $$$$$a."\n"; // 결과: a 

 echo $$$$$$a."\n"; // 결과: Hello 
 echo $$$$$$$a."\n"; // 결과: World 
 ?>

배열을 가변 변수로 사용할 수도 있습니다.

<?php 
 $number = array("one", "two", "three") ; 
 $a = "number" ; 
 ${$a}[] =  "four" ; // 배열 추가 
 print_r($number) ; 

 /* 
 결과: 
 Array 
 ( 
    [0] => one 
    [1] => two 
    [2] => three 
    [3] => four 
 ) 
 */ 
 ?>

다음은 클레스명 가변 변수의 예입니다.

<?php 
 class habony { 
      public function phptest() { 
          echo 'Hello world!'; 
      } 
 } 

 $my_habony = 'habony'; 
 $x = new $my_habony(); 
 $x->phptest();  // 결과: Hello world! 
 ?>

가변변수는 함수나 클레스 안에서 $this->로 사용되는 특수한 변수를 동적인 변수로 사용될 수 없습니다.

0 댓글