Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 변수 이름을 문자열로 가져오는 방법

PHP에서 변수 이름을 문자열 형태로 가져오고 싶다면 가변 변수(Variable Variables) 또는 $GLOBALS 배열을 활용할 수 있습니다. 아래 예제를 통해 두 가지 방법을 자세히 살펴보겠습니다.

예제 1: 가변 변수($$) 사용하기

PHP의 가변 변수 문법인 이중 달러 기호($$)를 사용하면 문자열 값을 변수 이름처럼 다룰 수 있습니다.

<?php
   $a = "This is it!";
   $$a = "Demo string!";
   print($a);
?>

출력 결과

This is it!

위 코드에서 $$a는 변수 $a에 저장된 값("This is it!")을 이름으로 하는 새로운 변수를 생성합니다. 즉, ${"This is it!"}라는 변수가 만들어지는 것입니다. 하지만 print($a)는 여전히 원래 변수 $a의 값을 출력하므로 결과는 "This is it!"이 됩니다.

예제 2: $GLOBALS 배열로 변수 이름 찾기

변수에 담긴 값을 기준으로 해당 변수의 실제 이름을 알아내려면 PHP의 슈퍼 글로벌 배열인 $GLOBALS를 활용하는 함수를 직접 작성할 수 있습니다.

<?php
   $val = "This is it!";
   function display($var) {
      foreach($GLOBALS as $demo => $value) {
         if ($value === $var) {
            return $demo;
         }
      }
      return false;
   }
   print display($val);
?>

출력 결과

val

이 코드의 동작 원리는 다음과 같습니다.

  • $GLOBALS 배열에는 현재 스크립트 전역 범위에 정의된 모든 변수가 "변수 이름 => 값" 형태로 저장되어 있습니다.
  • display() 함수는 인자로 받은 값과 동일한 값을 가진 변수를 $GLOBALS에서 순회하며 찾습니다.
  • 일치하는 변수를 발견하면 해당 변수의 이름(배열 키)을 반환하고, 찾지 못하면 false를 반환합니다.

따라서 $val에 저장된 값과 일치하는 전역 변수의 이름인 "val"이 출력됩니다.

주의 사항

$GLOBALS를 이용한 방식은 값이 중복되는 변수가 여러 개 있을 경우 첫 번째로 발견된 변수 이름만 반환한다는 점에 유의해야 합니다. 또한 성능상으로도 전역 변수를 모두 순회하기 때문에 대규모 애플리케이션에서는 신중하게 사용하는 것이 좋습니다.