소개
PHP에서 참조 다른 이름으로 동일한 변수 내용에 액세스할 수 있습니다. 그것들을 사용하여 산술 연산을 수행할 수 없기 때문에 C/C++의 포인터와 다릅니다. C/C++에서는 실제 메모리 주소입니다. 반대로 PHP에서는 기호 테이블 별칭입니다. PHP에서는 변수 이름과 변수 내용이 다르기 때문에 같은 내용이라도 이름이 다를 수 있습니다. 참조 변수는 & 접두사로 생성됩니다. 원래 변수에 서명합니다. 따라서 $b=&$a $b가 $a의 참조 변수임을 의미합니다.
참조로 할당
다음 예에서 두 변수는 동일한 값을 참조합니다.
예시
<?php $var1=10; $var2=&$var1; echo "$var1 $var2\n"; $var2=20; echo "$var1 $var2\n"; ?>
출력
하나의 값이 변경되면 다른 값에도 반영됩니다.
10 10 20 20
참조로 정의되지 않은 변수를 할당, 전달 또는 반환하면 생성됩니다. 함수 내에서 전역으로 선언된 변수에 대한 참조를 할당하면 참조는 함수 내에서만 볼 수 있습니다. foreach 문에서 참조가 있는 변수에 값을 할당하면 참조도 수정됩니다.
예시
<?php $arr=[1,2,3,4,5]; $i=&$ref; foreach($arr as $i) echo $i*$i, "\n"; echo "ref = ". $ref; ?>
출력
$ref의 값은 배열의 마지막 요소의 값을 저장합니다.
1 4 9 16 25 ref = 5
다음 예에서 배열 요소는 배열 초기화 전에 선언된 개별 변수에 대한 참조입니다. 요소가 수정되면 변수의 값도 변경됩니다.
예시
<?php $a = 10; $b = 20; $c=30; $arr = array(&$a, &$b, &$c); for ($i=0; $i<3; $i++) $arr[$i]++; echo "$a $b $c"; ?>
출력
$a, $b 및 $c의 값도 증가합니다.
11 21 31