PHP에서 가변 변수의 개념을 이해합니다. 변수 변수 PHP에서 다음 코드에 대한 이해에 따르면PHP 가변 객체 속성
$foo = 'hello';
$$foo = 'world';
echo $foo . ' ' . $hello;
이 같은 출력 생성합니다
Hello World
을하지만 어려운 변수 객체의 경우를 이해하는 것이 발견하고 속성
다음과 같이 단일 속성으로 foo라는 클래스가 있습니다.
이제class foo {
var $r = 'I am r.';
}
, 클래스 foo는 인스턴스를 생성하고 변수 변수 다음 코드의 개념을 사용하여 :
모든 것이 벌금I am r.
입니다까지 :
$foo = new foo();
$bar = 'r';
echo $foo->$bar;
가 출력 ,하지만 배열 값을 가진 속성을 포함 시키면 엉망이되어 버립니다. 말은 예를 들어 나는 클래스 foo는에 배열 값과 다른 속성을 추가하고 이제 클래스는 다음과 같습니다 나는 클래스 foo는의 인스턴스를 생성하고 속성을 읽으려고하면 이제
class foo {
var $arr = array('I am A.', 'I am B.', 'I am C.');
var $r = 'I am r.';
}
$arr = 'arr';
echo $foo->$arr[1];
출력한다 : 다음 $ [1]을, 언
I am r.
그리고 출력이 이상하게 보입니다. 어떻게 의미합니까 $ foo -> $ arr [1]은 foo 클래스의 $ r로 해결됩니까?
는 $ foo는 일을 안 -> $ 편곡 해결 $ foo->편곡에 [1] (주이 : 더 달러 기호가 없습니다) 출력 제공 :
I am B.
어떻게 이것이 일어날까요?
나는 $ foor {$ arr} [1] 출력이 인 것을 알고 있습니다. "나는 B 다."
제 질문은 왜 $ foo -> $ arr이 $ foo-> arr을 해결하지 못합니까? 변수 $ arr이 'arr'값을 보유하고 있다고 가정하면?
관리자/수퍼바이저에게 보내는 메모 :이 질문은 중복되지 않습니다. 비슷한 질문을 검색해 보았지만 아무 것도 알아야 할 대답이 없었습니다.
단지 같은 것을 게시하고 싶습니다. - http://ideone.com/7s8stM –
@KarolyHorvath. 여기 내 완전한 대답의 개념 증명이 있습니다 : http://ideone.com/VGmLP8 – Kromey
중괄호를 사용하여 제공 한 솔루션에 대해 알고 있고 이미 제 질문에서도 언급했습니다. 그리고 당신의 답은 제 시간을 많이 절약 해주었습니다. 고맙습니다. 답변을 수락하려고 시도했지만 스택 오버플로는 4 분 내에 응답을 수락 할 수 없다고 말합니다. 다시 한 번 고맙다. – mystic