참조 개체를 사용하여 다음과 같은 stdClass
개체와 할당이 있습니다. 그러나 unset
후에여전히 $B
의 이전 값을 출력하면 새 값이 $A
의 ->foo
속성에 할당 된 경우에도 $A
의 이전 값이 출력됩니다. 아래의 추적을 참조하십시오.stdClass 개체 및 섀도 복사본 이상한 출력
<?php
$A = new stdclass;
$A->foo = 'AAA';
echo "Ouput $ A:";
echo "<pre>";
print_r($A);
/*
stdClass Object
(
[foo] => AAA
)
*/
$B = &$A;
unset($A);
$A = new stdclass;
$A->foo = 'aaa';
echo "after unset $ A and again assigning new value. Ouput $ A:";
echo "<pre>";
print_r($A);
/* prints like
stdClass Object
(
[foo] => aaa
)
*/
echo "Ouput $ B:";
echo "<pre>";
print_r($B);
/* prints like
stdClass Object
(
[foo] => AAA
)
*/
편집 :
질문 $B
이 $A
의 참조를 할당되었다고하지만 $A
- 의 해제 후에는
$A
의 이전에 할당 된 값의 값을 인쇄 할 수 있습니다 어떻게? $A
이 설정되어 있지 않고$B
이$A
의 값을 인쇄하려고하면$A
의 새 값을 인쇄해야합니까?source
객체 인 경우 우리가Shadow Copy
의 경우 아시다시피
vanished/destroyed
다음 reference
객체는 source
객체가 가리키는 된 위치를 가리 수 없습니다.
무엇이 질문입니까? – Oswald
@Oswald, 아래의 업데이트 된 질문을 참조하십시오. – NullPointer