코드 복사 코드는 다음과 같습니다.
/**
* 변수 이름 가져오기
*
* @param $string
* @return $string
*
* $test = "helo"
* $test2 = " 안녕하세요";
* getVarName($test2);
*/
function getVarName(&$src) {
//현재 변수 값 저장
$save = $src;//모든 변수 값 저장
$allvar = $GLOBALS;//$GLOBALS를 순회하지 않음 스택 문제가 발생합니다
foreach($allvar as $k=>$v){
//변수 값이 동일하지만 동일한 변수가 아닐 수도 있습니다. 여러 변수의 값이 동일할 수 있음
if ($src = = $v){
//현재 변수의 값 변경 $src
$src = 'change'
//$GLOBALS[$k]도 변경되면 동일한 변수입니다.
if ($src == $GLOBALS[$k]){
//echo "$$k 이름은 $k
"
//변수 값 복원
$src = $save;
return $k;
}
}
}
}
복사해 보니 테스트 결과가 때로는 맞기도 하고 때로는 오랜 시간 고민 끝에 드디어 알아냈습니다. 아주 간단하지만, 같은 상황에 처한 학생들이 주목해주기를 바라는 마음으로 기록했습니다.
코드 복사 코드는 다음과 같습니다.
$test2 = "hello" ; $countNum=0;
echo getVarName($test2);
//논리적으로 출력은 "test2"여야 하지만 출력은 "countNum"입니다.