PHP 변수 변수

伊谢尔伦
풀어 주다: 2016-11-24 13:45:09
원래의
1190명이 탐색했습니다.

가변 변수 이름을 사용하는 것이 편리한 경우도 있습니다. 즉, 변수의 변수명을 동적으로 설정하여 사용할 수 있다. 일반 변수는 선언을 통해 설정됩니다. 예:

<?php
    $a = &#39;hello&#39;;
?>
로그인 후 복사

변수 변수는 일반 변수의 값을 변수 변수의 변수 이름으로 가져옵니다. 위의 예에서는 달러 기호($)를 두 개 사용한 후 hello를 변수 변수로 사용할 수 있습니다. 예를 들면 다음과 같습니다.

<?php
    $a = &#39;world&#39;;
?>
로그인 후 복사

이때 두 개의 변수가 정의됩니다. $a의 내용은 "hello"이고 $hello의 내용은 "world"입니다. 따라서 다음 문

<?php
    echo "$a ${$a}";
?>
로그인 후 복사

은 다음 문과 정확히 동일한 결과를 출력합니다.

<?php
    echo "$a $hello";
?>
로그인 후 복사

둘 다 hello world를 출력합니다.

배열에 가변 변수를 사용하려면 모호성을 해결해야 합니다. 이는 $$a[1]을 작성할 때 파서가 $a[1]을 변수로 원하는지, 아니면 $$a를 변수로 원하는지 여부를 알고 인덱스 [1] 값으로 변수를 추출해야 합니다. 이 문제를 해결하기 위한 구문은 첫 번째 경우에는 ${$a[1]}를 사용하고 두 번째 경우에는 ${$a}[1]을 사용하는 것입니다.

변경 가능한 속성 이름을 통해 클래스 속성에 액세스할 수도 있습니다. 변경 가능한 속성 이름은 호출 범위 내에서 확인됩니다. 예를 들어 $foo->$bar 표현식의 경우 $bar는 로컬 범위에서 구문 분석되고 해당 값은 $foo의 속성 이름으로 사용됩니다. $bar가 배열 셀인 경우에도 마찬가지입니다.

중괄호를 사용하여 속성 이름을 명확하게 구분할 수도 있습니다. 속성이 배열에 있는 경우, 속성 이름에 여러 부분이 포함된 경우, 속성 이름에 잘못된 문자(예: json_decode() 또는 SimpleXML)가 포함된 경우에 가장 유용합니다.

예제 #1 변수 ​​속성 예

<?php
class foo {
    var $bar = &#39;I am bar.&#39;;
    var $arr = array(&#39;I am A.&#39;, &#39;I am B.&#39;, &#39;I am C.&#39;);
    var $r = &#39;I am r.&#39;;
}
$foo = new foo();
$bar = &#39;bar&#39;;
$baz = array(&#39;foo&#39;, &#39;bar&#39;, &#39;baz&#39;, &#39;quux&#39;);
echo $foo->$bar . "\n";
echo $foo->$baz[1] . "\n";
$start = &#39;b&#39;;
$end = &#39;ar&#39;;
echo $foo->{$start . $end} . "\n";
$arr = &#39;arr&#39;;
echo $foo->$arr[1] . "\n";
echo $foo->{$arr}[1] . "\n";
?>
로그인 후 복사

위 루틴은 다음을 출력합니다:

I am bar.
I am bar.
I am bar.
I am r.
I am B.
로그인 후 복사

경고

PHP 함수에서 슈퍼전역 변수 클래스 메서드에서는 변경 가능한 변수로 사용할 수 없습니다. $this 변수도 특수 변수이므로 동적으로 참조할 수 없습니다.


관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿