/같은 변수를 변경 :
$this->{$var}
컨텍스트는 CI의 datamapper 얻을 규칙입니다. 이 구문이 실제로 무엇을하는지 찾는 것 같습니다. {이 점에서 무엇을합니까? 왜 안되 :
$this->var
감사합니다!
/같은 변수를 변경 :
$this->{$var}
컨텍스트는 CI의 datamapper 얻을 규칙입니다. 이 구문이 실제로 무엇을하는지 찾는 것 같습니다. {이 점에서 무엇을합니까? 왜 안되 :
$this->var
감사합니다!
가변 변수 인 입니다. 따라서 $this->{value-of-$val}
이됩니다.
은 참조 : 그래서 예를 들면 http://php.net/manual/en/language.variables.variable.php
:
$this->a = "hello";
$this->b = "hi";
$this->val = "howdy";
$val = "a";
echo $this->{$val}; // outputs "hello"
$val = "b";
echo $this->{$val}; // outputs "hi"
echo $this->val; // outputs "howdy"
echo $this->{"val"}; // also outputs "howdy"
근무 예 : 물론
이 클래스의 컨텍스트 내에서 작동하고 http://3v4l.org/QNds9. 이처럼 그냥 간단하게 현지 상황에 변수 변수를 사용할 수 있습니다 :
$a = "hello";
$b = "hi";
$val = "a";
echo $$val; // outputs "hello"
$val = "b";
echo $$val; // outputs "hi"
근무 예 : $this->{$var}
및 $this->var
모두가 두 개의 매우 다른 것들의 http://3v4l.org/n16sk
먼저. 후자는 var
클래스 변수를 요청하고 다른 클래스는 $var
문자열에 포함 된 변수의 이름을 요청합니다. $var
이 'foo'
문자열 인 경우 $this->foo
등을 요청합니다.
동적 프로그래밍 (런타임에만 변수 이름을 알고있는 경우)에 유용합니다.
${'y - x'} = 'Ok';
$var = 'y - x';
echo ${$var};
변수 이름 y - x
때문에 공간과 -
문자의 유효하지 않은 경우에도 Ok
인쇄됩니다 : 당신은 이상한 변수 이름이 특히 때 문자열 맥락에서 고전 {}
표기법은 매우 강력하다.
+1했습니다. 나는 변수 이름이 그렇게 복잡 할 수 있다는 것을 결코 알지 못했다. 그래서 배열/객체를 변수 이름으로 넣을 수 있습니까? –
@DaveChen, 문자열 표현은 yes입니다. 변수 이름에는 길이 제한이 있다고 생각합니다. 나는 이것이 좋은 습관이라고 생각하지 않는다. 그러므로 나는 그것을 피할 것이다. – Shoe
hmm'$ object-> attr' ='$ object -> { "attr"}':) –
@DaveChen도이 예제로 내 대답을 업데이트했습니다. – jszobody
시작했을 때 나는' $ this-> $ val' 그리고 비참하게 실패했습니다. 이 답변을보기 좋네. –