먼저 할당 연산자 =의 동작을 설명합니다. 다음 예를 살펴보세요.
코드 복사 코드는 다음과 같습니다.
$ i = 0;
$j = $i;
$j = 0;
echo $j; // 출력 0
$arr = array(0);
$arr2 = $arr;
$arr2[0] = 1;
echo $arr[0] //출력 0
클래스 B
{
public $i = 0;
}
$b = new B()
$c = $b
$c->i = 1; ); // printout 1
이 예에서 볼 수 있듯이 = 연산자 오른쪽의 변수가 기본 데이터 유형 또는 배열인 경우 = 연산자는 오른쪽에 있는 변수를 왼쪽에 있는 변수로, 오른쪽에 있는 변수가 클래스와 같은 기본 데이터 유형이나 배열이 아닌 경우 =는 오른쪽에 있는 변수에 대한 참조를 할당합니다. 왼쪽. 참고: 오른쪽 변수가 가리키는 콘텐츠 영역이 아닌 오른쪽 변수에 대한 참조입니다. 자세한 내용은 아래 예를 참조하세요.
코드 복사 코드는 다음과 같습니다.
$a = new A()
$b_a = $a
$b_r =
$b_a; = null;
var_dump($ a); //객체(A)[2]를 인쇄합니다. $a가 가리키는 내용은 여전히 존재합니다.
$b_r =
var_dump($a); //Null 인쇄, $a가 가리키는 내용이 여전히 존재합니다. Cleared
위의 예에서는 $var = &$a를 사용하여 값을 할당하는 경우 $var=null을 사용하는 것을 보여줍니다. $var 변수를 삭제하면 실제로는 $var 변수가 삭제됩니다. 실제로 이 문장은 콘텐츠 영역을 가리키는 모든 참조 변수가 콘텐츠 영역의 콘텐츠를 삭제하는 데 사용될 수 있음을 의미합니다. . 따라서 $var 변수를 삭제하려면 unset($var)을 사용하세요. PS: 사실 이런 방식으로 $var를 할당하는 것은 단지 참조일 뿐이며 메모리를 많이 차지하지 않습니다. 이는 소멸 여부에 관계없이 unset으로 소멸되어야 한다는 의미입니다.
다음은 "사용 설명서"에 나오는 "인용 설명"의 예입니다.
$a =& $b
아래와 같은 설명이 있습니다.
$a 및 $b를 의미합니다. 같은 변수를 가리킨다.
참고: $a와 $b는 여기서 정확히 동일하다는 의미는 $a가 $b를 가리키거나 그 반대의 경우도 마찬가지지만 $a와 $b가 같은 위치를 가리킨다는 의미입니다.
명언이란 무엇인가요?
코드 복사 코드는 다음과 같습니다.
PHP에서 인용한다는 것은 동일한 변수 내용에 다른 이름으로 액세스한다는 의미입니다. 이는 C 포인터와는 다릅니다. 대신 참조는 기호 테이블 별칭입니다. PHP에서는 변수 이름과 변수 내용이 다르기 때문에 동일한 내용이라도 다른 이름을 가질 수 있습니다. 가장 가까운 비유는 Unix의 파일 이름과 파일 자체입니다. 변수 이름은 디렉토리 항목이고 변수 내용은 파일 자체입니다. 참조는 Unix 파일 시스템에서 긴밀한 연결로 간주될 수 있습니다.
"참조란 무엇인가"에 대한 간단한 설명:
int i = 0
int j = 0
int *p = &i
p = &j
위 코드에서 p는 i의 메모리 주소를 가리키는 포인터이고, *p는 p의 포인터를 변경하는 내용을 의미하며 *p=111이라는 표현이 사용됩니다. .i의 내용을 변경합니다. 이는 PHP에서는 그렇지 않습니다.
$i = 0;
$p = &$i;
$p = 111은 $i의 값을 즉시 변경합니다.
위 내용은 데이터 유형의 내용을 포함하여 다양한 데이터 유형에 대한 PHP의 데이터 유형 = 할당 연산자의 다양한 동작을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.