PHP의 참조 할당 연산자, = &


답변:


121

더 이상 사용되지 않으며 그럴 것 같지 않습니다. 예를 들어 기존 데이터를 복사하는 대신 한 어레이 또는 객체 미러 변경 사항을 다른 어레이의 일부로 만드는 표준 방법입니다.

이것은 참조의한 할당 이라고 하는데, 매뉴얼을 인용하자면 "두 변수가 동일한 데이터를 가리키고 아무 것도 복사되지 않는다는 것을 의미합니다" .

유일하게 됩니다 으로 사용되지 않는 =&"의 결과를 할당한다 new참고로" PHP 5 혼란의 원인이 될 수 있습니다. new참조에 의해 자동으로 할당되므로 &에서는 중복 / 사용되지 $o = &new C;않지만에서는 사용되지 않습니다 $o = &$c;.


검색하기가 어렵 기 때문에 =&( 앰퍼샌드와 같음 )은 = &( 공백 앰퍼샌드와 같음 )과 으며 $x = &$y['z'];또는 $x = &$someVar( 앰퍼샌드 달러 기호 변수 이름 ) 과 같은 다른 변수로 실행되도록 작성되는 경우가 많습니다 . 문서에서 단순화 된 예 :

$a = 3;
$b = &$a;
$a = 4;
print "$b"; // prints 4

다음 은 PHP 매뉴얼의 Assign By Reference대한 자세한 섹션에 대한 편리한 링크 입니다. 이 페이지는 참고 문헌 시리즈의 일부입니다. 전체 시리즈를 읽는 데 잠시 시간을 할애 할 가치가 있습니다.


8
참고 : "검색하기 어렵 기 때문에" : symbolhound.com 은 이와 같은 항목에 대한 귀하의 친구입니다.
billynoah

1
@billynoah 와우! 이제 symbolhound가 내 도구 상자에 영구적으로 추가되었습니다.
Parapluie

26

두 개의 다른 연산자입니다. =아시다시피 할당입니다. 그리고 &변수는 값이 아닌 참조로 액세스해야 함을 의미합니다.


60
미안하지만 이것은 너무 단순합니다. $ a = & $ b는 변수 $ a가 $ b가 지금하는 것과 같은 것을 참조하도록하는 것을 의미합니다. 그 후 $ a = 5; 또한 $ b에 5가 있습니다. 그러나 참조 링크는 $ b = & $ xyz에 의해 끊어 질 수 있습니다. 또는 unset ($ b); 이때 $ a는 5를 보유하는 셀의 위치를 ​​아는 유일한 변수가됩니다. 또한 = &를 사용하여 $ a를 설정하면 다음 번에 = &를 사용해야 (또는 unset ($ a))하여 변경해야합니다. $ a의 참조 링크, 특히 $ a = NULL; 링크를 끊지 않고 5를 null로 바꿉니다.
Don

8
@Don : 정교하게 해주셔서 감사합니다. 나는 당신이 C 프로그래머라고 말할 수 있습니다.
Asaph

8
나는 Don이 말하는 것을 두 번째로한다. 그러나 나는 이것이 너무 단순하다고 말하지 않을 것입니다. 나는 이것이 틀렸다고 말하고 싶습니다.
Artefacto

@Don 당신은 정말로 당신의 의견을 답변으로 게시해야합니다.
Adam

7
$x = &$y['z'];

$y['z']존재하지 않는 경우 생성 하고으로 설정 하는 효과도 있습니다 null.

이렇게하면 읽고 싶었던 오류 메시지를 방지 할 수 있습니다. 아직 문서를 찾지 못했습니다. 내가 아는 한 5.3에서 새로운 것 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.