반응형
PHP에서는 모든 변수가 '심볼 테이블'의 HastTable 구조에 저장되며, 심볼의 작용 영역은 액티브 심볼 테이블과 연관된다.이 때문에 같은 시간에는 하나의 활동표만 있다.
현재 활성 심볼 테이블을 가져오려면 get_defined_vars 방법을 사용하십시오
get_defined_vars // 정의된 모든 변수들의 배열 되돌리기
변수의 값에 따라 변수 이름을 찾되 같은 값의 변수가 있을 수 있으니 주의하시기 바랍니다.
따라서 현재 변수의 값을 임시 변수에 저장한 후 원래 변수에 고유 값을 할당합니다.변수의 이름을 찾아 이름을 찾은 뒤 임시 변수의 값을 원래 변수에 다시 대입할 수 있도록 한다.
예1:
<?php
$a = '100';
echo '$a name is:'.get_variable_name($a).' value:'.$a; // $a name is: a value: 100
/**
* @param String $var 찾을 변수
* @param Array $scope 검색할 범위
* @param String 변수 이름
*/
function get_variable_name(&$var, $scope=null){
$scope = $scope==null? $GLOBALS : $scope; // 범위가 없다면 Globals에서 찾아봐
// 같은 값의 변수가 있을 수 있으므로, 현재 변수의 값을 임시 변수에 저장한 후, 원 변수에 고유 값을 부여하여 변수의 이름을 찾고, 이름을 찾은 후 임시 변수의 값을 다시 원래 변수에 할당합니다
$tmp = $var;
$var = 'tmp_value_'.mt_rand();
$name = array_search($var, $scope, true); // 값을 기준으로 변수 이름 찾기
$var = $tmp;
return $name;
}
?>
예2: function에 정의된 변수 이름 가져오기
<?php
function test(){
$a = '100';
echo '$a name is:'.get_variable_name($a);
}
test(); // $a name is: undefined
//function에 정의된 변수 globals를 찾을 수 없기 때문에
function test2(){
$a = '100';
echo '$a name is:'.get_variable_name($a, get_defined_vars());
}
test2(); // $a name is: a
// scope를 get_defined_vars() 로 설정합니다
?>
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php output_buffering 캐시 사용 (0) | 2022.08.19 |
---|---|
동일한 도메인이 서로 다른 IP에 대응하여 지정된 호스트 파일의 내용에 접근하는 방법 (0) | 2022.08.19 |
HTTP 204와 205 애플리케이션 (0) | 2022.08.19 |
php 비동기 호출 방법 (0) | 2022.08.19 |
php 생성자가 다른 개수 매개 변수를 지원하는 방법 (0) | 2022.08.19 |