기본 할당 연산자는 "="입니다. 처음에는 "같음"이라고 생각할 수도 있지만 그렇지 않습니다. 이는 실제로 오른쪽 표현식의 값을 왼쪽 피연산자에 할당하는 것을 의미합니다.
대입연산식의 값은 할당된 값입니다. 즉, "$a = 3"의 값은 3입니다. 이 방법으로 몇 가지 트릭을 수행할 수 있습니다.
<?php $a = ($b = 4) + 5; // $a 现在成了 9,而 $b 成了 4。 ?>
배열의 경우 "=>" 연산자를 사용하여 명명된 키에 값을 할당합니다. 이 연산자는 다른 할당 연산자와 우선순위가 동일합니다.
기본 할당 연산자 외에도 모든 이진 산술, 배열 집합 및 문자열 연산자에 적합한 "결합 연산자"가 있는데, 이를 통해 해당 값을 표현식에 사용하고 결합할 수 있습니다. 표현식의 결과는 다음과 같습니다. 예:
<?php $a = 3; $a += 5; // sets $a to 8, as if we had said: $a = $a + 5; $b = "Hello "; $b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!"; ?>
할당 작업은 원래 변수의 값을 새 변수에 복사하므로(값별 할당) 하나를 변경해도 다른 변수에는 영향을 미치지 않습니다. 이는 조밀한 루프의 큰 배열과 같은 일부 값을 복사하는 데에도 적합합니다.
PHP의 일반적인 값별 할당 동작에는 예외가 있습니다. 객체를 발견하면 복사를 위해 clone 키워드를 명시적으로 사용하지 않는 한 PHP 5에서는 참조로 할당됩니다.
참조 할당
PHP는 "$var = &$othervar;" 구문을 사용하여 참조 할당을 지원합니다. 참조에 의한 할당은 두 변수가 모두 동일한 데이터를 가리키고 아무것도 복사되지 않음을 의미합니다.
예제 #1 참조 할당
<?php $a = 3; $b = &$a; // $b 是 $a 的引用 print "$a\n"; // 输出 3 print "$b\n"; // 输出 3 $a = 4; // 修改 $a print "$a\n"; // 输出 4 print "$b\n"; // 也输出 4,因为 $b 是 $a 的引用,因此也被改变 ?>
PHP 5부터 new 연산자는 자동으로 참조를 반환하므로 new 결과에 대한 참조 할당은 PHP 5.3 이상 버전에서 작동하지 않습니다. E_DEPRECATED 오류 메시지를 발행합니다. 이전 버전에서는 E_STRICT 오류 메시지가 발행되었습니다.
예를 들어 다음 코드는 경고를 생성합니다.
<?php class C {} /* The following line generates the following error message: * Deprecated: Assigning the return value of new by reference is deprecated in... */ $o = &new C; ?>