php의 인용(변수나 함수, 객체 등 앞에 & 기호를 붙이는 것)의 역할에 대해서는 다음 절차를 살펴본다
<?php
$a = 100; // 변수 a 선언
$b = & $a; // 선언 변수 b, 참조 변수 a
echo"$a < />;
echo"$b />;
$a++;//변수 a자증1
echo"$a < />;
echo"$b <br />>;//변수 b도 보기, 추가1, 동일 메모리 셀을 사용하였음을 설명하다
프로그램 실행 결과:
100
100
101
101
많은 사람들이 php의 인용이 C의 지침과 같다고 오해하지만 실제로는 그렇지 않고 매우 다르다.C언어의 포인터는 배열 전달 과정에서 명시적으로 밝히지 않는 것 외에는 모두 *를 사용하여 정의해야 하며, php에서 주소에 대한 포인터(유사 포인터) 기능은 사용자가 직접 구현한 것이 아니라 Zend 코어에 의해 구현되며, php에서 인용하는 것은 "쓰기 시 복사"의 원리로, 즉 쓰기 조작이 일어나지 않는 한 동일한 주소를 가리키는 변수나 객체는 복사되지 않는다.
php 기본값은 다음과 같습니다
<?php
$a = 20;
$b = $a;
$a = $a + 10;
echo $a.' and '.$b;
?>
프로그램 실행 결과:
30 and 20
주소 전달이 되려면 추가 &가 필요합니다
<?php
$a = 20;
$b = &$a;
$a = $a + 10;
echo $a.' and '.$b;
?>
프로그램 실행 결과:
30 and 30
즉, $a의 주소를 $b로 전송하면 두 변수는 현재 하나의 메모리 영역을 공유하며, 즉 값은 같다.
함수에서 동일한 구문을 사용할 수 있습니다. 참조를 반환하고 new 연산자에 사용합니다
<?php
$bar =& new fooclass();
$foo =& find_var($bar);
?>
인용이 하는 두 번째 일은 인용을 통해 변수를 전달하는 것이다.이는 함수 내에서 로컬 변수를 만들고, 해당 변수가 통화 범위 내에서 동일한 내용을 인용함으로써 달성된다.통속적으로 말하자면, 함수의 파라미터는 하나의 로컬 변수의 인용이다.다음은 일례
<?php
function foo(&$val1, $val2) {
$val1 += 1;
$val2 += 1;
}
$a=5;
$b=10;
foo($a,$b);
echo $a;
echo $b;
?>
이 코드를 실행하는 것은 함수에 두 개의 인수를 전달하는데, 하나는 $a의 내용을 인용하는 것이고, 하나는 $b의 값을 실행하는 것인데, 이 함수를 실행한 결과 $a의 내용이 바뀐 반면, $b의 내용은 변하지 않았다.
PHP 참조의 세 번째 용법은 참조 반환입니다. 이 용법은 이해하기 어려우며, 참조 반환은 참조가 어떤 변수에 바인딩되어야 하는지 함수를 사용하여 찾을 때 사용됩니다.참조를 반환할 때이 문법:간단하게 말하면 인용함수의 반환이다.다만 파라미터 전달과 달리 함수 정의와 함수 인용 두 곳에 모두 & 기호를 사용해야 한다.다음은 일례
<?php
function &find_var ($param)
{
/* ...code... */
return $found_var;
}
$foo =& find_var ($bar);
$foo->x = 2;
?>
이 예제에서 $foo에 값을 부여하는 것은 함수 find_var의 반환 참조이므로 $foo->x에 값을 부여하는 것은 단순한 값이 아니라 find_var의 반환 참조에 값을 부여하는 것입니다.
PHP 인용의 마지막 사용법은 인용 위치입니다. 두 가지 응용 프로그램이 있습니다. 하나는 global 참조입니다. global $var로 변수를 선언할 때 실제로 전역으로 이동합니다.변수의 인용. 즉 $var=&$GLOBALS["var"];와 같다.다른 하나는 $this의 용법이며, 하나의 객체의 방법에서 $this는 항상 그것을 호출하는 객체의 참조이다
'개발 꿀팁 > PHP' 카테고리의 다른 글
php에서 중국어 문자열을 어떻게 잘라내나요? (0) | 2022.08.03 |
---|---|
8가지 필수 PHP 기능 개발 (0) | 2022.08.03 |
php 캐시 팁 (0) | 2022.08.03 |
PHP는 재귀적인 무한 등급 분류를 사용하지 않는다 (0) | 2022.08.02 |
PHP forach에 대한 인용 변수 사용 피트 (0) | 2022.08.02 |